我的输入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代码应该如何获得相同的结果 有人可以帮帮我
答案 0 :(得分:0)
您仍然可以使用XDocument
和LINQ to XML;
var doc = XDocument.Load(filePath);
var myNodeList = doc.XPathSelectElements(".//node[@Attribute1 ='" & varString1 &'']/nodechild[@AttributeChildnode1 = ''& varString2 &'']");
XPathSelectElements
在XNode
名称空间内的System.Xml.XPath
上声明为扩展方法。
标准 Linq to 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
- result4
,具体取决于guid
和var
个变量值。