有关GetElementsByTagName的CLR C ++语法问题

时间:2011-01-25 18:32:22

标签: .net xml c++-cli getelementsbytagname

我是c ++的新手。我有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>
 ...

我想从第一个项目获取标题标签。而且我不知道如何。请帮助。

UPD。 我尝试了这段代码,但它不起作用:(

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

2 个答案:

答案 0 :(得分:0)

如果我使用复制您的文件的字符串来调用xml.LoadXml(),则会收到</description没有结尾>的错误。如果我解决了这个问题,我会得到一个XmlException,因为你有多个根元素。如果我删除第二个<item>,那么我可以让它给我标题(从我的C#代码中即时转换):

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

答案 1 :(得分:0)

此代码工作正常。

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;