2013-02-14 75 views
0

我是C#编程新手。我正在尝试解析XML文档并在控制台上打印这些值。我的程序正在编译没有错误,但我没有得到期望的结果。如何打印来自XMLNodeList的节点

这是代码。

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(); 

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

我想在值字段信息的XML文件。

谢谢。

+0

我没有看到整个XML,但你的XPath似乎是错误的。你有“// root/ab:Identity/Refrences/Reference/Value/text()”而不是“// root/Identity/Refrences/Reference/Value/text()”。一旦你得到正确的列表,你需要迭代列表然后打印出来。 – 2013-02-14 18:02:41

+0

你的意思是这样的XmlDocument doc = new XmlDocument(); doc.Load(“C:\\ Users \\ hsyed \\ Documents \\ XMLParser \\ Example.xml”); XmlNodeList node = doc.SelectNodes(“// root/Identities/Identity/Refrences/Reference/Value/text()”); (int i = 0; i <2; i ++) { System.Console.WriteLine(node.ToString); } – Huzaifa 2013-02-14 18:25:59

回答

1

使用你的例子:

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

下面是对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);