3

我是 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>

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

谢谢。

4

2 回答 2

4

使用您的示例:

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());
}
于 2013-02-14T18:45:23.487 回答
3

这是在 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);
于 2013-02-14T20:45:18.260 回答