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>
------------- (完) -------------
  • 本文作者: oynix
  • 本文链接: https://oynix.com/2024/01/1fca82f97779/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

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