15

我试过了:

textBox1.Text = new XDocument(new XDeclaration("1.0", "UTF-8", "yes"),
    new XElement("root1", new XAttribute( "xmlns", @"http://example.com"), new XElement("a", "b"))
).ToString();

但我得到:

The prefix '' cannot be redefined from '' to 'http://example.com' within the same start element tag.

我还尝试替换(根据我找到的答案):

XAttribute(XNamespace.Xmlns,...

但是也报错了。

注意:我不想在文档中包含多个 xmlns。

4

1 回答 1

29

XDocumentAPI 使用命名空间范围名称的方式是作为实例XName。只要您接受 XML 名称不仅仅是一个字符串,而是一个作用域标识符,它们就很容易使用。这是我的做法:

var ns = XNamespace.Get("http://example.com");
var doc = new XDocument(new XDeclaration("1.0", "utf-8", null));
var root = new XElement(ns + "root1", new XElement(ns + "a", "b"));
doc.Add(root);

结果:

<root1 xmlns="http://example.com">
    <a>b</a>
</root1>

请注意,+运算符被重载以接受 anXNamespace和 aString以产生和XName实例。

于 2013-02-12T20:10:18.357 回答