查询XML的一部分并写入另一个变量以及公共标记

时间:2017-04-24 15:23:32

标签: c# xml linq

我有一个以下格式的xml

<maintag>
    <common1> 123 </common1>
    <common2> 234 </common>
    <part>
        <partid>1</partid>
        <partprice> 500 </partprice>
    </part>
    <part>
        <partid>1</partid> 
        <partprice> 500 </partprice> 
    </part>
</maintag>

我的要求是选择身份1的partid。我还需要标记<common1>,  <common2&GT;对于我的结果中的两个部分来说,这通常是C#

1 个答案:

答案 0 :(得分:1)

你没有完全指明你想要的罪。我已经做了一个例子。

(注意)<common2 >元素与结束类型< common>不匹配,这需要</common2 > !!

加载文件XDocument

        XDocument _doc = XDocument.Load("C:\\t\\My File2.txt");

获取常用元素

        string common1 = _doc.XPathSelectElement("maintag/common1").Value;
        string common2 = _doc.XPathSelectElement("maintag/common2").Value;

获取部分ID == 1的所有元素并将其放入列表

        List<XElement> data = _doc.XPathSelectElements("maintag/part").Where(x => x.Element("partid").Value == 1.ToString()).ToList();

        // loop al elemements and extract results from previous query
        foreach (XElement row in data)
        {
            // Get value from partid element
            string id = row.Element("partid").Value;
            // Get value from partprice element
            string price = row.Element("partprice").Value;
        } 

选择与id 1匹配的第一个元素

        XElement data2 = _doc.XPathSelectElements("maintag/part").Where(x => x.Element("partid").Value == 1.ToString()).FirstOrDefault();
        // Get value from partid element
        string id1 = data2.Element("partid").Value;
        // Get value from partprice element
        string price1 = data2.Element("partprice").Value;