1

GML名前空間とXML to LINQを使用してXMLドキュメントを作成しようとしています。

私の目標は、次のXElementようなコンテンツです。

<gml:name>...</gml:name>

しかし、私は次のようになります:

<name xmlns="http://www.opengis.net/gml" />

問題は、gml:が要素にないことです。何故ですか?


私のコードは次のとおりです。

XNamespace nsGML = "http://www.opengis.net/gml";
XElement item = new XElement(nsGML + "name");
4

1 に答える 1

3

まずこのXML

<name xmlns="http://www.opengis.net/gml" />

この XML と同等です

<gml:name xmlns:gml="http://opengis.net/gml" />

そして、すべての XML コンシューマーは、それを同じものとして扱う必要があります。つまり、次のような 2 番目の出力を実現できます。

XNamespace nsGML = "http://www.opengis.net/gml";
XElement item = new XElement(nsGML + "name",
                    new XAttribute(XNamespace.Xmlns + "gml", nsGML.NamespaceName));

名前空間宣言属性を指定しない場合、LINQ to XML はプレフィックスを自動的に選択します (この場合は空のプレフィックスを使用します)。特定のプレフィックスの使用を強制したい場合は、名前空間宣言属性を提供する必要があります。

于 2010-10-01T11:30:30.617 に答える