2011-05-12 88 views
1

我有一个xml文件,我正在努力阅读c#中的“我的名字”值# 任何人都可以帮忙吗?如何阅读xml节点值

<?xml version="1.0" encoding="UTF-8" ?> 
<doc:SomeReport xsi:schemaLocation="urn:tes:doc:Fsur.0.97 C:\Documents%20and%20Settings\rty0403\Desktop\Smaple%20Sampling%20Schemas\Testdoc.doc.0.97.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bie3="urn:tes:data:CommonAggregates:0.97" xmlns:bie1="urn:tes:data:SampleAggregates:0.97" xmlns:doc="urn:tes:doc:Fsur.0.97"> 
    <doc:family> 
    <doc:first>my name</doc:first> 
    </doc:family> 
</doc:SomeReport> 
+3

你是如何读取数值的?小心给一个代码示例? – alex 2011-05-12 06:31:47

+0

在这里你去,火柴不带任何东西。 XmlDocument xdoc = new XmlDocument(); xdoc.Load(file); XmlNodeList matches = xdoc.SelectNodes(“// First”); – melspring 2011-05-12 06:42:37

+0

请更新您的问题与任何额外的信息。 – 2011-05-12 06:43:05

回答

1

你可以使用XPathSelectElement方法:

using System; 
using System.Xml; 
using System.Xml.Linq; 
using System.Xml.XPath; 

class Program 
{ 
    static void Main() 
    { 
     using (var reader = XmlReader.Create("test.xml")) 
     { 
      var doc = XDocument.Load(reader); 
      var nameTable = reader.NameTable; 
      var namespaceManager = new XmlNamespaceManager(nameTable); 
      namespaceManager.AddNamespace("doc", "urn:tes:doc:Fsur.0.97"); 
      var first = doc.XPathSelectElement("//doc:first", namespaceManager); 
      Console.WriteLine(first.Value); 
     } 
    } 
} 
+0

感谢Darin,工作正常!!只是想知道什么是使用XDocument和XMLDocumnet之间的区别如下XmlDocument xdoc = new XmlDocument(); xdoc.Load(file); XmlNamespaceManager man = new XmlNamespaceManager(xdoc.NameTable); man.AddNamespace(“doc”,“urn:tes:doc:Fsur.0.97”); XmlNodeList matches = xdoc.SelectNodes(“// doc:first”,man); – melspring 2011-05-13 00:44:37

1

下面是做这件事:

XElement xml = XElement.Load(fileName); // load the desired xml file 
XNamespace aw = "urn:tes:doc:Fsur.0.97"; // this is the namespace in your xml 

var firstName = xml.Element(aw + "family").Element(aw + "first").Value; 

这只会让你类型的一个元素类型家庭的一个元素,第一个

+0

如何传递文件名而不是文本? – melspring 2011-05-12 06:58:25

+0

@melspring:'XElement xml = XElement.Load(filepath);' – alex 2011-05-12 07:20:49