CLR C ++ синтаксис вопрос о GetElementsByTagName - PullRequest
0 голосов
/ 25 января 2011

Я новичок в с ++. У меня есть XML-файл и этот код:

XmlDocument^ xml = gcnew XmlDocument();
xml -> Load( "url.xml" );

box -> Text = xml -> DocumentElement -> GetElementsByTagName("item") -> Item(0) -> GetElementsByTagName("title") -> Item(0) -> InnerXml; // This code doesnt work.

и XML-файл:

 <item>
      <pubDate>date</pubDate>
      <title>title</title>
      <author>author</author>
      <description>description</description
 </item>
 <item>
 ...

Я хочу получить заголовок тега от первого элемента. И я не знаю как. Помогите пожалуйста.

обн. Я пробовал этот код, но он не работает: (

xml -> DocumentElement -> GetElementsByTagName("item") -> Item(0) -> ChildNodes  -> GetElementsByTagName("title") -> Item(0) -> InnerXml;

Ответы [ 2 ]

0 голосов
/ 26 января 2011

Этот код работает нормально.

System::String ^ item =  xml -> DocumentElement -> GetElementsByTagName("item")->Item(0) -> OuterXml;

XmlDocument^ xmlt = gcnew XmlDocument();
xmlt -> LoadXml( item );

System::String^ title = xmlt -> DocumentElement -> GetElementsByTagName("title")->Item(0)-> OuterXml;

box -> Text = title;
0 голосов
/ 26 января 2011

Если я вызываю xml.LoadXml(), используя строку, которая копирует то, что у вас есть для вашего файла, я получаю ошибку, что у </description нет конца >. Если я исправлю это, я получу XmlException, потому что у вас есть несколько корневых элементов. Если я удаляю второе <item>, тогда я могу получить это, чтобы дать мне название (преобразованное на лету из моего кода C #):

XmlElement^ item = (XmlElement)(xml->GetElementsByTagName("item")->Item(0));
string^ title = item->GetElementsByTagName("title")->Item(0)->InnerXml;
...