【发布时间】:2015-07-15 10:56:24
【问题描述】:
有没有更简单的方法从xml 中的一个节点获取InnerText?
目前我正在使用以下代码来获取值:
var xml = new XmlDocument();
xml.LoadXml(callback); //callback
string txt = xml.FirstChild.FirstChild.FirstChild.LastChild.InnerText;
我想知道是否有任何方法可以在不加载整个 XmlDocument 的情况下获取值。我只需要访问这个节点和值。
提前致谢!
示例 XML:(TRACK 节点最多出现 80 次,此处为 13 次)
<RESPONSES>
<RESPONSE STATUS="OK">
<ALBUM>
<ID>some_long_id_123456789123456789</ID>
<ARTIST>some_artist</ARTIST>
<TITLE>some_album</TITLE>
<PKG_LANG>ENG</PKG_LANG>
<DATE>1234</DATE>
<GENRE NUM="123456" ID="654321">some_string</GENRE>
<TRACK_COUNT>13</TRACK_COUNT>
<TRACK>
<TRACK_NUM>1</TRACK_NUM>
<ID>some_id_123456789</ID>
<TITLE>some_title</TITLE>
</TRACK>
...
<TRACK>
<TRACK_NUM>13</TRACK_NUM>
<ID>some_id_123456789_13</ID>
<TITLE>some_title_13</TITLE>
</TRACK>
<URL TYPE="IMAGE" SIZE="MEDIUM" WIDTH="123456" HEIGHT="123456">the_url_i_wanna_access</URL>
</ALBUM>
</RESPONSE>
</RESPONSES>
【问题讨论】:
-
您可以使用
XmlReader逐个读取节点,直到找到您想要的节点。 -
首先,我会使用 LINQ to XML 而不是
XmlDocument。然后我会创建一个可读的查询。如果 XML 很大,您可以直接使用XmlReader等较低级别的 API 来提高性能。您需要提供一些上下文 - XML 以及您想要的内容。 -
@CharlesMager 添加了示例 xml,正在编辑和缩短它以适应这里..
-
所以你想得到第一个
TRACK的TITLE? -
@CharlesMager no,
xml.FirstChild.FirstChild.FirstChild.LastChild.InnerText导致专辑节点末尾的URL标签,尤其是内部文本(“the_url_i_wanna_access”)
标签: c# xml xml-parsing xmldocument