聯盟
爲了得到你需要使用union運算的兩個節點 - |
例如,接下來的查詢將返回兩種類型的節點 - comp_div
和sty_ret_type
:
/meadinkent/record/comp_div | /meadinkent/record/sty_ret_type
Fi濾波器的子節點值
爲了過濾節點基於其子節點值,你需要將所有條件相同的括號[nodeA='value1' and nodeB='value2']
例如,一個查詢將返回記錄節點,其子節點匹配濾波器:
/meadinkent/record[comp_div='MENSWEAR' and sty_ret_type='ACCESSORIES']
AC#工會例如:
[Test]
public void UnionExample()
{
string xml =
@"<meadinkent>
<record>
<comp_div>MENSWEAR</comp_div>
<sty_ret_type>ACCESSORIES</sty_ret_type>
<sty_pdt_type>BELTS</sty_pdt_type>
<pdt_category>AWESOME_BELTS</pdt_category>
</record>
</meadinkent>";
XDocument xDocument = XDocument.Parse(xml);
IEnumerable<XElement> selectedElements =
xDocument.XPathSelectElements(
"/meadinkent/record/comp_div | /meadinkent/record/sty_ret_type");
Assert.That(selectedElements.Count(), Is.EqualTo(2));
}
AC由子節點示例#濾波器:
[Test]
public void FilterExample()
{
string xml =
@"<meadinkent>
<record>
<comp_div>MENSWEAR</comp_div>
<sty_ret_type>ACCESSORIES</sty_ret_type>
<sty_pdt_type>BELTS</sty_pdt_type>
<pdt_category>AWESOME_BELTS</pdt_category>
</record>
</meadinkent>";
XDocument xDocument = XDocument.Parse(xml);
IEnumerable<XElement> selectedElements =
xDocument.XPathSelectElements(
"/meadinkent/record[comp_div='MENSWEAR' and sty_ret_type='ACCESSORIES']");
Assert.That(selectedElements.Count(), Is.EqualTo(1));
Assert.That(selectedElements.First().Name.LocalName, Is.EqualTo("record"));
}
對不起,我沒有說清楚。我所追求的是對Record節點的引用,它與內部的所有元素值匹配。所以,如果我想斷言sty_pdt_type是「BELTS」,而pdt_category是「AWESOMEBELTS」,那麼我想要引用所有這些元素匹配這些值的記錄節點。 – 2010-04-08 11:02:11
@Matt Thrower,我現在明白你的意思了:)相應地更新了答案。 – Elisha 2010-04-08 11:10:08
太棒了,謝謝! – 2010-04-08 11:12:19