Получение брата с помощью xPath - PullRequest
2 голосов
/ 22 июня 2011

В настоящее время я работаю над решением .net C #, которое возвращает 2 узла-брата. Использование Xpath 1.0

Небольшой пример моего документа 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 вместо динамика.

Любые комментарии или предложения приветствуются.

Ответы [ 2 ]

1 голос
/ 22 июня 2011

Посмотрев на это некоторое время, я полностью упустил, что мне нужно переместить theNodes2 также в цикле while, например,

while(theNodes2.MoveNext())

Спасибо всем

0 голосов
/ 22 июня 2011

// SPEECH / LINE не найдет ничего в документе, в котором элементы называются «play», «scene», «speaker» и «line».Пожалуйста, постарайтесь быть более внимательным при формулировании ваших вопросов.Downvoting.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...