如何从XMLNodeList打印节点

时间:2013-02-14 17:40:54

标签: c#

我是C#编程的新手。我试图解析XML文档并在控制台上打印值。我的程序编译没有错误,但我没有得到理想的结果。

这是守则。

XmlDocument doc = new XmlDocument();
doc.Load("C:\\Users\\hsyed\\Documents\\XMLParser\\Example.xml");
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("ab", "Identifier");
XmlNodeList node = doc.SelectNodes("//root/ab:Identity/Refrences/Reference/Value/text()", nsmgr);

String s= node.ToString();
System.Console.WriteLine(s);

Console.Read();

XML文件

    

    <Attributes>

        <Attribute Name="StudentFirstName" Tag="B"/>

    </Attributes>
</Metadata>
<Identities>
<Identity Identifier="00002C8DGPDDTZ5D" CDate="2013-02-07">
    <References>
        <Reference>
            <Value>A^S2513.268898|B^JOHN</Value>
            <Traces/>
        </Reference>
        <Reference>
            <Value>A^S2613.269022|B^JOHN</Value>
            <Traces/>
        </Reference>
    </References>
</Identity>
<Identity Identifier="000388MRUO7TRSBH" CDate="2013-02-07">
    <References>
        <Reference>
            <Value>A^S2513.285402|B^Doe</Value>
            <Traces/>
        </Reference>
        <Reference>
            <Value>A^S2613.285476|B^Doe</Value>
            <Traces/>
        </Reference>
    </References>
</Identity>

我想在“值”字段中获取信息。

感谢。

2 个答案:

答案 0 :(得分:2)

使用您的示例:

XmlDocument doc = new XmlDocument(); 
doc.Load("C:\\Users\\hsyed\\Documents\\XMLParser\\Example.xml");

XmlNodeList nodes = doc.SelectNodes("//root/Identities/Identity/Refrences/Reference/Value/text()");

foreach (XmlNode xn in nodes)
{
    Console.WriteLine(xn.Value.ToString());
}

答案 1 :(得分:2)

这是一个搭载LINQ的替代方案:

XmlDocument doc = new XmlDocument(); 
doc.Load("whatever path to xml");

var nodes = doc
    .SelectNodes("xpath query goes here")
    .Cast<XmlNode>()
    // optionally, convert to a list
    .ToList();

// Outputs something like: 
//   System.Collection.Generic.List`1[[System.Xml.XmlNode, ...]]
Console.WriteLine(nodes.GetType().FullName);