2013-04-02 141 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;