[英]get xml node value using c#
我有一个问题需要在C#中获取特定节点的值
我有此示例XML-Code
,这是我的C#代码
string xml = @"
<ChapterHeader>
<Text> I need to get the text here</Text>
</ChapterHeader>
";
XmlReader rdr = XmlReader.Create(new System.IO.StringReader(xml));
while (rdr.Read())
{
if (rdr.NodeType == XmlNodeType.Element)
{
Console.WriteLine(rdr.LocalName);
if (rdr.LocalName == "ChapterHeader")
{
Console.WriteLine(rdr.Value);
}
}
}
所需的输出是
<Text> I need to get the text here</Text>
包括文本节点。 我怎样才能做到这一点? 谢谢
我还需要循环一个巨大的xml文件
我需要获取特定节点的值
而且我还需要跳过一些特定的节点。 例子我有一个节点。 程序不得读取该节点及其子节点。
我怎样才能做到这一点?
<ChapterHeader>
<Text> I need to get the text here</Text>
</ChapterHeader>
<Blank>
<Not>
</Not>
</Blank>
System.Xml.Linq
是一个较新的库,旨在摆脱不需要的阅读器样式。
var document = XDocument.Parse(xml);
var texts = document.Descendants("Text");
foreach (var text in texts)
{
Console.WriteLine(text);
}
所需的输出是
<Text> I need to get the text here</Text>
查找ReadInnerXml
,它将所有内容(包括标记)读取为字符串。
Console.WriteLine( rdr.ReadInnerXml());
在以下问题中,您要处理更大的Xml
。 处理较大的集合时,我更喜欢Linq
而不是Xml
。
程序不得读取该节点及其子节点
对的,这是可能的。 你可以做这样的事情。
XDocument doc = XDocument.Load("filepath");
var nestedElementValues =
doc.Descendants("ChapterHeader") // flattens hierarchy and look for specific name.
.Elements() // Get elements for found element
.Select(x=>(string)x.Value); // Read the value.
检查这个Example
您可以使用与您使用的解析样式相同的样式( rdr.LocalName = "Text"
),然后使用rdr.ReadOuterXml()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.