在xmlnodes之间获取文本

本文关键字:取文本 获取 之间 xmlnodes | 更新日期: 2023-09-27 18:22:13

如何在XML节点之间获取文本

<company>
<data id="14" />{<data id="15" />DOCUMENT<data id="23" />pet<data id="24" />DOCUMENT<data id="25" />
</company>

我需要id 23和25之间的数据(即宠物文档)

我已经在xmldoc 中加载了这个xml

请建议

在xmlnodes之间获取文本

您可以使用LINQ:

XDocument doc = XDocument.Parse(@"<company>...</company");
string result = string.Join(" ",
    doc.Root
       .Nodes()
       .SkipWhile(n => n.NodeType != XmlNodeType.Element ||
                       (int)((XElement)n).Attribute("id") != 23)
       .TakeWhile(n => n.NodeType != XmlNodeType.Element ||
                       (int)((XElement)n).Attribute("id") != 25)
       .OfType<XText>());
// result == "pet DOCUMENT"

Dim tDoc as XmlDocument = new XmlDocument
Dim tNodes As XmlNodeList = Nothing
tDoc.Load(path_to_xml_file)   ' Or .LoadXml(xml_string)
tNodes = tDoc.SelectNodes("//data")
For Each tNode As XmlNode In tNodes
  Select Case tNode.Attributes("id").value
    Case 23, 24, 25
      ' Do your processing here
  End Select
Next

编辑我误读了上面的XML。无论如何我不知道如何获取特定节点ID之间的文本。。但是您可以使用tDoc.SelectSingleNode("//company").InnerText 获取所有文本

XDocument doc = XDocument.Parse(@"<company>...</company");
string result = string.Join(" ",
    doc.Root
       .Nodes()
       .SkipWhile(n => n.NodeType != XmlNodeType.Element ||
                       (int)((XElement)n).Attribute("id") != 23)
       .TakeWhile(n => n.NodeType != XmlNodeType.Element ||
                       (int)((XElement)n).Attribute("id") != 25)
       .OfType<XText>());