2

私は次のコードを使用してをに変換しXmlElementていますXElement

public staic XElement ToXElement(this XmlNode node) {
    XElement element = null;
    if (null != node) {
        element = XElement.Parse(node.OuterXml);
    }
    return element;
}

ただし、電話をかけElements()たりElements("ElementName")、結果が得られなかったりした場合。
ただし、を呼び出すと結果が得られますNodes()

Elementsを呼び出して要素が生成されないのはなぜですか?2つのメソッドの違いは何ですか?

これが私が解析しているxmlの抜粋です。

<Feature xmlns="http://schemas.microsoft.com/sharepoint/">
    <ElementManifests>
        <ElementFile Location="Path/file.xml"/>
    </ElementManifests>
</Feature>
4

2 に答える 2

3

名前空間を正しく使用していない可能性があります。これらの方法は両方とも正しく機能します。

XElement root = XElement.Load("test.xml"); //or result of ToXElement
foreach(var item in root.Elements())
{
    Console.WriteLine(item.Name);
}

XNamespace ns = "http://schemas.microsoft.com/sharepoint/";
var manifestsNode = root.Element(ns + "ElementManifests");

Elements()(すべての直接の子要素を取得する) と(特定の直接の子要素を 1 つ取得する)の違いがわからない場合はElement()、Linq to Xml チュートリアルから始める必要があります。

于 2012-04-13T22:50:29.797 に答える