如何在 C# 中获取 XML 节点的字符串
How to get the String of a XML node in C#
在 XML 文档中输入代码:
<foo>
<bar><para> test </para> </bar>
<bar>text</bar>
<bar>Whosebug</bar>
</foo>
我正在尝试解析它,但只得到 bar 中的字符串;通过这种方式:
[节点是 foo 的函数]
foreach (XmlNode subNode in node.ChildNodes)
{
if (subNode.Name == "bar")
{
if (!String.IsNullOrWhiteSpace(subNode.InnerText))
Debug.WriteLine(subNode.Name + " - " subNode.InnerText);
}
}
然而它给了我考验
谢谢
你想要"test"吗?尝试以下:
string input =
"<foo>" +
"<bar><para> test </para> </bar>" +
"<bar>text</bar>" +
"<bar>Whosebug</bar>" +
"</foo>";
XDocument doc = XDocument.Parse(input);
List<string> bars = doc.Descendants("bar").Where(x => x.NextNode != null).Select(x => (string)((XElement)x.NextNode)).ToList();
这就是您要查找的内容(根据您更新的问题进行编辑)
XDocument doc = XDocument.Load(path to your xml file);
XNamespace ns = "http://docbook.org/ns/docbook";
var result = doc.Root.Descendants(ns + "para")
.Where(x => x.FirstNode.NodeType == System.Xml.XmlNodeType.Text)
.Select(x => x.Value)
.ToList();
在您更新的 xml 中,我看到您正在使用命名空间,因此您的节点名称不是 para
,而是 theNameSpace + "para"
。名称空间在 xml 文件的第一行中定义。您也可以看到 this 示例。
在 XML 文档中输入代码:
<foo>
<bar><para> test </para> </bar>
<bar>text</bar>
<bar>Whosebug</bar>
</foo>
我正在尝试解析它,但只得到 bar 中的字符串;通过这种方式:
[节点是 foo 的函数]
foreach (XmlNode subNode in node.ChildNodes)
{
if (subNode.Name == "bar")
{
if (!String.IsNullOrWhiteSpace(subNode.InnerText))
Debug.WriteLine(subNode.Name + " - " subNode.InnerText);
}
}
然而它给了我考验
谢谢
你想要"test"吗?尝试以下:
string input =
"<foo>" +
"<bar><para> test </para> </bar>" +
"<bar>text</bar>" +
"<bar>Whosebug</bar>" +
"</foo>";
XDocument doc = XDocument.Parse(input);
List<string> bars = doc.Descendants("bar").Where(x => x.NextNode != null).Select(x => (string)((XElement)x.NextNode)).ToList();
这就是您要查找的内容(根据您更新的问题进行编辑)
XDocument doc = XDocument.Load(path to your xml file);
XNamespace ns = "http://docbook.org/ns/docbook";
var result = doc.Root.Descendants(ns + "para")
.Where(x => x.FirstNode.NodeType == System.Xml.XmlNodeType.Text)
.Select(x => x.Value)
.ToList();
在您更新的 xml 中,我看到您正在使用命名空间,因此您的节点名称不是 para
,而是 theNameSpace + "para"
。名称空间在 xml 文件的第一行中定义。您也可以看到 this 示例。