2012-01-31 141 views
1

我們怎樣才能獲得XML節點之間的文本之間的文本越來越將XMLNode

<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

請建議

回答

2

你可以使用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" 
+0

哪部分獲得文本? – DotnetSparrow 2012-01-31 18:13:13

0

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

+0

我需要之間的文本這些節點。我如何獲得文本? – DotnetSparrow 2012-01-31 17:39:38

0
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>());