我试图找到一种简单的方法,将XML添加到XML-with-xmlns而不必获取xmlns=""
,也不必每次都指定xmlns
我尝试了XDocument
和XmlDocument
,但找不到简单的方法。我得到的最接近的是:
XmlDocument xml = new XmlDocument();
XmlNode docNode = xml.CreateXmlDeclaration("1.0", "UTF-8", null);
xml.AppendChild(docNode);
XmlElement root = xml.CreateElement("root", @"http://example.com");
xml.AppendChild(root);
root.InnerXml = "<a>b</a>";
但我得到的是:
<root xmlns="http://example.com">
<a xmlns="">b</a>
</root>
那么:有没有办法设置InnerXml
而不修改它?
答案 0 :(得分:2)
您可以像创建a
元素一样创建XmlElement
root
,并指定该元素的InnerText
。
选项1:
string ns = @"http://example.com";
XmlDocument xml = new XmlDocument();
XmlNode docNode = xml.CreateXmlDeclaration("1.0", "UTF-8", null);
xml.AppendChild(docNode);
XmlElement root = xml.CreateElement("root", ns);
xml.AppendChild(root);
XmlElement a = xml.CreateElement("a", ns);
a.InnerText = "b";
root.AppendChild(a);
选项2:
XmlDocument xml = new XmlDocument();
XmlNode docNode = xml.CreateXmlDeclaration("1.0", "UTF-8", null);
xml.AppendChild(docNode);
XmlElement root = xml.CreateElement("root");
xml.AppendChild(root);
root.SetAttribute("xmlns", @"http://example.com");
XmlElement a = xml.CreateElement("a");
a.InnerText = "b";
root.AppendChild(a);
产生的XML:
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns="http://example.com">
<a>b</a>
</root>
如果您使用root.InnerXml = "<a>b</a>";
而非从XmlElement
创建XmlDocument
,则生成的XML为:
选项1:
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns="http://example.com">
<a xmlns="">b</a>
</root>
选项2:
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns="http://example.com">
<a xmlns="http://example.com">b</a>
</root>