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>

+演算子がオーバーロードされて、XNamespaceとを受け入れ、String結果とXNameインスタンスを生成することに注意してください。

于 2013-02-12T20:10:18.357 に答える