【发布时间】:2015-03-28 08:33:06
【问题描述】:
我知道一个 XML 文件的网络链接,并且我正在我的应用程序中使用它。
它的根元素是feed,它有几个称为entry 的子元素。每个entry 都有一个元素summary,它由文本和几个子标签组成。例如,
<entry>
<title type="text">money giving</title>
<author>
<name>BMA</name>
</author>
<summary type="text">
<short-description>we give you money</short-description>
<tab id="0" header="Header & d">
This is Line 1
This is Line 2
This is Line 3
</tab>
<tab id="1" header="abc">
Only one line here
</tab>
</summary>
</entry>
我想获取summary 中的完整文本,包括子标签short-description 和tags。我试过使用这段代码:
XmlDocument xmlDoc = await XmlDocument.LoadFromUriAsync(new Uri("http://bigmanani.com/Kiosk-RSS_updated.xml"));
XDocument xDoc = XDocument.Parse(xmlDoc.GetXml());
XElement root = xDoc.Root;
XNamespace ad = "http://www.w3.org/2005/Atom";
IEnumerable<string> title = from abc in root.Descendants(ad+"summary") select (string )abc;
foreach(string one in title)
DebugMessage(one);
问题是我只得到summary 元素的文本部分,而子元素short-description 和tab 被完全忽略。我怎样才能获得完整的文本?
【问题讨论】:
-
那么你看到了什么输出?我期望看到“我们给你钱这是第 1 行这是第 2 行这是第 3 行这里只有一行”——这与我刚刚执行的测试一致。 . 如果您希望看到子元素名称和属性,则不应转换为
string。 -
这是输出,但我也希望包含子标签,所以输出应该是“
we give you money”,即@中的完整文本987654334@ -
正确,所以不要转换为
string。但请记住,就 XML 而言,这不是“完整的文本”——它是文本节点、元素节点、属性等的混合体。如果您将 XML 视为字符串,它就是文本,但最好将其视为一棵节点树。
标签: c# xml xaml windows-store-apps winrt-xaml