10

LinqToXmlで新しい要素を作成する際に問題が発生しました。これは私のコードです:

XNamespace xNam = "name"; 
XNamespace _schemaInstanceNamespace = @"http://www.w3.org/2001/XMLSchema-instance";

XElement orderElement = new XElement(xNam + "Example",
                  new XAttribute(XNamespace.Xmlns + "xsi", _schemaInstanceNamespace));

私はこれを手に入れたい:

<name:Example xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

しかし、XMLでは常にこれを取得します。

<Example xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="name">

私が間違っているのは何ですか?

4

1 に答える 1

17

<name:Example xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">nameプレフィックスが宣言されていないため、名前空間の形式が正しくありません。そのため、XML API を使用してそれを構築することはできません。できることは、次の名前空間整形式 XML を構築することです。

<name:Example xmlns:name="http://example.com/name" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />

コードで

//<name:Example xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:name="http://example.com/name"></name:Example>

XNamespace name = "http://example.com/name";
XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance";

XElement example = new XElement(name + "Example",
new XAttribute(XNamespace.Xmlns + "name", name),
new XAttribute(XNamespace.Xmlns + "xsi", xsi));

Console.WriteLine(example);
于 2012-08-21T10:29:17.947 に答える