2013-04-02 149 views
4

我有这样的XML: A型:读取从根节点XML的值

<?xml version="1.0" encoding="UTF-8"?> 
<nfeProc versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe"> 
</nfeProc> 

B型:

<?xml version="1.0" encoding="UTF-8"?> 
<cancCTe xmlns="http://www.portalfiscal.inf.br/cte" versao="1.04"> 
</cancCTe> 

类型C:

<?xml version="1.0" encoding="UTF-8"?> 
<cteProc xmlns="http://www.portalfiscal.inf.br/cte" versao="1.04"> 
</cteProc> 

我已阅读根节点:

XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.Load(nomear); 
XmlNodeList ml = xmlDoc.GetElementsByTagName("*"); 
XmlNode primer = xmlDoc.DocumentElement; 
exti = primer.Name; 

使用此代码我读了nfeProc,cancTEcteProc

如何读取versao的值?

回答

3

当您使用C#3.5或更高版本,你可以采取LINQ的优势,以XML(你的标签说,你正在使用C#4.0,因此它当然也适用)

//your xml contents. I've just escaped " symbols, so I can use it as literal 
string str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n "+ 
       "<nfeProc versao=\"2.00\" xmlns=\"http://www" + 
       ".portalfiscal.inf.br/nfe\">\r\n </nfeProc>"; 

var xml = XDocument.Parse(str); 

Console.WriteLine(xml.Root.Attribute("versao").Value); 

打印:

2.00 
+0

LINQ to XML从.NET 3.5开始可用,而不是4 –

+0

@elmugrat是的,当然,他刚刚在标签中提到了'C#-4',所以他**可以**在.net 4中使用它。 –

+1

True ,但很容易误读你的第一句话为“如果你使用的是C#4.0”......我知道我做过;) –

0

一个例子试试这个

primer.Attributes["versao"].Value 

您也可以有所帮助:

System.Xml.Linq.XDocument doc = System.Xml.Linq.XDocument.Load("PATH TO YOUR .XML"); 
string value = doc.Element("nfeProc").Attribute("versao").Value; 
0

这是代码:

string attribute = primer.Attributes["versao"].Value;