web-dev-qa-db-ja.com

名前空間とプレフィックスをXElementで使用してxmlを作成するにはどうすればよいですか?

これは初心者のxmlの質問かもしれませんが、次のようなxmlドキュメントを生成するにはどうすればよいですか?

<root xmlns:ci="http://somewhere.com" xmlns:ca="http://somewhereelse.com">
    <ci:field1>test</ci:field1>
    <ca:field2>another test</ca:field2>
</root>

これを書いてもらうことができれば、残りの問題を解決することができます。

理想的には、c#でLINQ to XML(XElement、XNamespaceなど)を使用したいのですが、XmlDocumentsとXmlElementsを使用してこれをより簡単に、またはより適切に実行できる場合は、それを使用します。

ありがとう!!!

24
Chris Conway

必要な出力を作成する小さな例を次に示します。

using System;
using System.Xml.Linq;

class Program
{
    static void Main()
    {
        XNamespace ci = "http://somewhere.com";
        XNamespace ca = "http://somewhereelse.com";

        XElement element = new XElement("root",
            new XAttribute(XNamespace.Xmlns + "ci", ci),
            new XAttribute(XNamespace.Xmlns + "ca", ca),
                new XElement(ci + "field1", "test"),
                new XElement(ca + "field2", "another test"));
    }
}
47
Andrew Hare

このコードを試してください:

string prefix = element.GetPrefixOfNamespace(element.Name.NamespaceName);
string name = String.Format(prefix == null ? "{1}" : "{0}:{1}", prefix, element.Name.LocalName);`
1
Hariharan

このスレッドからいくつかの有用な情報が得られることを願っています--- 属性のXElementデフォルト名前空間は予期しない動作を提供します

編集:

別のFAQ at -- http://social.msdn.Microsoft.com/Forums/en-US/xmlandnetfx/thread/c0648840-e389-49be-a3d2-4d5db17b8ddd ==

0
adatapost