0

私の入力XML:

....
    <node Attribute1 = "GUID1">
        <childnode1 AttributeChildnode= var1> </childnode>
        <childnode2 AttributeChildnode= var2> </childnode>
    </node>
    <node Attribute1 = "GUID2">
        <childnode3 AttributeChildnode= var3> </childnode>
        <childnode4 AttributeChildnode= var4> </childnode>
    </node>
....

私のXPathコードは次のようになります

mynodelist = xmldoc.SelectNodes(".//node[@Attribute1 ='" & varString1 &'']/nodechild[@AttributeChildnode1 = ''& varString2 &'']")

Linq to XML コードが同じ結果を得るためにどのように見えるべきかわかりません。誰か助けてください。

4

1 に答える 1

0

XDocumentLINQ to XMLを使用して XPath を引き続き使用できます。

var doc = XDocument.Load(filePath);
var myNodeList = doc.XPathSelectElements(".//node[@Attribute1 ='" & varString1 &'']/nodechild[@AttributeChildnode1 = ''& varString2 &'']");

XPathSelectElementsは、名前空間XNode内の の拡張メソッドとして宣言されています。System.Xml.XPath

標準の Linq から XML へのバージョン

入力 XML:

<root>
    <node Attribute1="GUID1">
        <childnode AttributeChildNode1="var1" AttributeChildNode2="result1"></childnode>
        <childnode AttributeChildNode1="var2" AttributeChildNode2="result2"></childnode>
    </node>
    <node Attribute1="GUID2">
        <childnode AttributeChildNode1="var3" AttributeChildNode2="result3"></childnode>
        <childnode AttributeChildNode1="var4" AttributeChildNode2="result4"></childnode>
    </node>
</root>

クエリ:

string guid = "GUID1";
string var = "var1";

var elements = XElement.Load("Input.txt");

var value = (from node in elements.Elements("node")
             where (string)node.Attribute("Attribute1") == "GUID1"
             from childNode in node.Elements()
             where (string)childNode.Attribute("AttributeChildNode1") == "var1"
             select (string)childNode.Attribute("AttributeChildNode2")).FirstOrDefault();

と変数の値に応じてresult1-を返します。result4guidvar

于 2013-04-05T12:47:17.243 に答える