使用c#获取xml节点值

时间:2016-07-12 05:31:09

标签: c# xml

我有一个问题,我需要在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>

3 个答案:

答案 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。在处理较大的集合时,我更喜欢LinqXml

  

程序不得读取该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()