oynix

于无声处听惊雷,于无色处见繁花

XmlDocument里的NamespaceURI

当使用XmlDocument给Xml中的标签增加带前缀的属性时,需要明确指定namespace uri,如果使用root的,或是其他节点的,不会生效,简单在此做个记录。

举个例子,比如操作AndroidManifest.xml文件,向application中增加一个meta-data的标签,

1
2
3
4
5
6
7
<?xml version="1.0" encoding="utf-8"?>
<!-- GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.unity3d.player" xmlns:tools="http://schemas.android.com/tools">
<application>

</application>
</manifest>

首先需要先Load这个文件,然后获取到application节点,然后创建一个meta-data节点,最后将其加入到application中,

1
2
3
4
5
6
7
8
9
10
11
12
var doc = new XmlDocument();
doc.Load("path/to/xml/file");

// 这里需要明确制定
var metaNode = doc.CreatElement("meta-data");
metaNode.SetAttribute("http://schemas.android.com/apk/res/android", "name", "Channel");
metaNode.SetAttribute("http://schemas.android.com/apk/res/android", "value", "Mainland");

var rootNode = doc.DocumentElement;
rootNode.AppendChild(metaNode);

doc.Save("path/to/xml/file");

结果如下,如果使用父节点或是跟节点的NamespaceURI属性,那么属性将没有android前缀。

1
2
3
4
5
6
7
<?xml version="1.0" encoding="utf-8"?>
<!-- GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.unity3d.player" xmlns:tools="http://schemas.android.com/tools">
<application>
<meta-data android:name="Channel" android:value="Mainland" />
</application>
</manifest>
------------- (完) -------------

欢迎关注我的其它发布渠道

Related Issues not found

Please contact @oynix to initialize the comment