根据节点在xml文档中的位置查找元素的值

菲耶
<OverallReport>
    <Results>
       <Data1>
            <a>-30 </a>
            <b>400</b>
       </Data1>
       <Data2>
            <MoreData>
                    <c>2</c>
                    <d>100</d>
           </MoreData>
           <MoreData>
                    <c>4</c>
                    <d>200</d>
           </MoreData>
       </Data2>
   </Results>
   <Results>
       <Data1>
            <a>-50</a>
            <b>600</b>
       </Data1>
       <Data2>
           <MoreData>
                    <c>2</c>
                    <d>200</d>
           </MoreData>
           <MoreData>
                    <c>6</c>
                    <d>500</d>
           </MoreData>
      </Data2>
   </Results>
   <Results>
       <Data1>
            <a>-50</a>
            <b>600</b>
       </Data1>
       <Data2>
           <MoreData>
                    <c>2</c>
                    <d>300</d>
           </MoreData>
           <MoreData>
                    <c>6</c>
                    <d>900</d>
           </MoreData>
      </Data2>
   </Results>
</OverallReport>

我有一个XML文档,例如上面的文档,其中包含任意数量的“结果”节点和任意数量的“更多数据”节点。我必须找到包含两个特定值(例如a = -50,b = 600)的结果节点,并且在该节点内,如果'c'等于特定值,则找到'd'的值。同样,有多个结果节点可能具有相同的a,b和c,我将需要找到“ x”一个。因此,如果(a = -50,b = 600,c = 6,x = 0),我要寻找的d的值为500。如果(a = -50,b = 600,c = 6,x = 1)我正在寻找的d的值为900。

我已经发布了一个相关的问题,并给出了有效的答案,但这是更高级的内容,因此我决定创建一个新问题。我目前找到d的方式:

string wantedA = "-50";
string wantedB = "600";
string wantedC = "6";
string x=1;

string xpath = string.Format("OverallReport/Results[Data1/a={0} and Data1/b={1}]/Data2/MoreData[c={2}]/d",
wantedA, wantedB, wantedC);

XmlNode nodeD = document.SelectSingleNode(xpath);
Console.WriteLine(nodeD.InnerText);

再次,我是Xml的新手,任何帮助或提示将不胜感激!

罗曼·多斯科奇(Roman Doskoch)

首先,您的xml中存在一些错误,应该是:

<OverallReport>
    <Results>
       <Data1>
            <a>-30 </a>
            <b>400</b>
       </Data1>
       <Data2>
            <MoreData>
                    <c>2</c>
                    <d>100</d>
           </MoreData>
           <MoreData>
                    <c>4</c>
                    <d>200</d>
           </MoreData>
       </Data2>
   </Results>
   <Results>
       <Data1>
            <a>-50</a>
            <b>600</b>
       </Data1>
       <Data2>
           <MoreData>
                    <c>2</c>
                    <d>200</d>
           </MoreData>
           <MoreData>
                    <c>6</c>
                    <d>500</d>
           </MoreData>
      </Data2>    // was <Data2> - slash added
   </Results>
   <Results>
       <Data1>
            <a>-50</a>
            <b>600</b>
       </Data1>
       <Data2>
           <MoreData>
                    <c>2</c>
                    <d>300</d>
           </MoreData>
           <MoreData>
                    <c>6</c>
                    <d>900</d>
           </MoreData>
      </Data2>    // was <Data2> - slash added
   </Results>
</OverallReport>

其次,您必须将的类型x更改stringint

string wantedA = "-50";
string wantedB = "600";
string wantedC = "6";
int x = 1; // or 0

最后,您应该找到所有符合条件的节点,然后选择一个取决于以下条件的节点x

XmlNodeList nodes = doc.SelectNodes(xpath);            
Console.WriteLine(nodes[x].InnerText);

因此,您的代码应为:

    string wantedA = "-50";
    string wantedB = "600";
    string wantedC = "6";
    int x = 1; // or 0

    string xpath = string.Format("OverallReport/Results[Data1/a={0} and Data1/b={1}]/Data2/MoreData[c={2}]/d",
    wantedA, wantedB, wantedC);

    XmlNodeList nodes = doc.SelectNodes(xpath);            
    Console.WriteLine(nodes[x].InnerText);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

查找xml字符串节点在jquery中是否具有任何子元素

如何根据同一节点中不同属性值的匹配来查找和更新 XML 文档中的节点属性值?

使用节点在mongodb中查找最大字段值

查找 XML 中任意位置的元素或属性值

java - 如何通过节点在列表中的位置获取节点?(不是值,是整个节点)

XML模式设计:根据元素在文档中的位置来限制元素的出现

XSLT:查找节点在给定节点集中的位置

节点在场景中的位置

获取节点在列表中的位置?

找出节点在DOM树中的位置?

根据数组中单个子文档的字段值查找文档

通过xml文档中的内部文本查找xml节点

根据属性值在DOM中查找元素

根据名称从 XML 文档中删除整个节点

从文档中查找元素

根据节点值使用xslt从xml中删除节点

使用节点在mongodb中更新子文档

根据在数组中找到的值在mongodb中查找文档

AS3 / XML / FLASH:根据元素的值查找属性

根据子节点的值增加节点的位置

使用节点在 json 文件中查找内容的方法

在python中解析xml以查找所有元素(节点)的xpath

使用xslt处理xml文档中任何位置的元素

VBA和XML-通过XML文档搜索其值来查找特定节点

根据属性查找XML元素

根据文档中数组元素的值和文档本身的_id更新文档

根据交点在列表中查找最佳超集

根据 UIScrollView 的中心点在 UIScrollView 中查找视图的 CGPoint

查找 HTML 文档中任意位置的两个元素在 DOM 中的相对位置