我目前正在開發一個.net C#解決方案,該解決方案返回2個兄弟節點。使用XPath 1.0使用xPath獲取兄弟姐妹
我的XML文檔的一個小例子是這樣的:
<PLAY>
<SCENE>
<SPEAKER>
</SPEAKER>
<LINE>
</LINE>
</SCENE>
</PLAY>
我使用下面的代碼來獲取線和揚聲器,但我不傳遞知道爲什麼我得到整個XML文檔在上而不只是兄弟(揚聲器)
我:
List speakers = new List();
XmlDocument myDoc = new XmlDocument();
myDoc.Load(textXMLFile.Text.ToString());
// Clear the text box...
textResults.Text = "";
// ADD THIS...
XPathNavigator theNav = myDoc.CreateNavigator();
XPathNavigator theNav2 = myDoc.CreateNavigator();
//XmlNodeList theNodes =
// myDoc.SelectNodes(textXPath.Text.ToString());
textXPath.Text = "//SPEECH/LINE";
string val = "//SPEECH/SPEAKER";
XPathNodeIterator theNodes = theNav.Select(textXPath.Text.ToString());
XPathNodeIterator theNodes2 = theNav2.Select(val);
StringBuilder output = new StringBuilder();
while (theNodes.MoveNext())
{
if (theNodes.Current.InnerXml.ToString() == "Upon my sword.")
{
break;
}
else
{
speakers.Add(theNodes2.Current.InnerXml.ToString());
speakers.Add(theNodes2.Current.InnerXml.ToString());
}
}
for (int i =0; i < speakers.Count; ++i)
{
output.Append (speakers[i]+" ");
}
MessageBox.Show(""+output);
theNodes.Current.InnerXml.ToString()
工作正常,返回行,但theNodes2.Current.InnerXml.ToString()
似乎返回整個XML而不是揚聲器。
任何意見或建議表示讚賞。
其中'揚聲器。增加'行之一應該是'揚聲器。增加(theNodes.Current.InnerXml.ToString());'?現在他們都在使用'theNodes2'。 –
在Xml中處於什麼水平? –
我真的想出了它..我需要在我的while循環中循環Nodes2。謝謝大家。我會發佈一個答案,但我沒有足夠的代表來回答我自己的問題:( – Johnston