我有一个问题,我需要在c#
中获取特定节点的值我有这个示例import java.util.ArrayList;
import java.util.*;
// our main class becomes a file but the main method is still found
public class HelloWorld
{
public static void main(String[] args)
{
String[] strings = {"apple","bat","cow","dog","applebat","cowbat","dogbark","help"};
ArrayList<String> list1 = new ArrayList<String>(Arrays.asList(strings));
ArrayList<String> list2 = new ArrayList<String>(Arrays.asList(strings));
ArrayList<String> result = new ArrayList<String>(Arrays.asList(strings));
for(int i = 0; i<8;i++)
{
String curr1 = list1.get(i);
System.out.println(curr1);
int flag = 0;
for(int j = i+1;j<8;j++)
{
String curr2 = list2.get(j);
if((curr2.contains(curr1)&&!curr2.equals(curr1)))
{
result.remove(curr2);
}
}
}
System.out.println(result);
}
}
,这是我的C#代码
XML-Code
所需的输出是
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);
}
}
}
包括文本节点。我怎样才能做到这一点?谢谢
我还需要循环一个巨大的xml文件
我需要获取特定节点的值
我也需要跳过一些特定的节点。 例子我有一个节点。程序不能读取该Node及其childen节点。
我该怎么做?
<Text> I need to get the text here</Text>
答案 0 :(得分:0)
System.Xml.Linq
是一个较新的库,旨在消除不受欢迎的读者风格。
var document = XDocument.Parse(xml);
var texts = document.Descendants("Text");
foreach (var text in texts)
{
Console.WriteLine(text);
}
答案 1 :(得分:0)
所需的输出是
<Text> I need to get the text here</Text>
查找ReadInnerXml
,它将所有内容(包括标记)读取为字符串。
Console.WriteLine( rdr.ReadInnerXml());
在以下问题中,您希望处理较大的Xml
。在处理较大的集合时,我更喜欢Linq
到Xml
。
程序不得读取该Node及其childen Node
是的,有可能。你可以这样做。
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
答案 2 :(得分:0)
您可以使用您正在使用的相同解析样式(rdr.LocalName = "Text"
),然后使用rdr.ReadOuterXml()