2013-03-28 131 views
2

我具有三種XML文件工作:閱讀來自XML第一根節點

A型:

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

Tyepe 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(@"C:\crruopto\135120068964590_v01.04-procCTe.xml"); 
    XmlNodeList ml = xmlDoc.GetElementsByTagName("*"); 
    XmlElement root = xmlDoc.DocumentElement; 
    exti = root.ToString(); 

,但不返回任何我想要閱讀的第一個節點,需要知道,如果該文件是nfeProc,canCTE或cteProc 第二個問題是如何在相同的代碼得到「價值」的價值呢? ??

感謝

回答

3

this後:

//Root node is the DocumentElement property of XmlDocument 

XmlElement root = xmlDoc.DocumentElement 

//If you only have the node, you can get the root node by 

XmlElement root = xmlNode.OwnerDocument.DocumentElement 
0

我會建議使用XPath。這裏就是我在從本地存儲的字符串的XML內容閱讀和選擇任何根目錄下的第一個節點是一個例子:

XmlDocument doc = new XmlDocument(); 
doc.Load(new StringReader(xml)); 

XmlNode node = doc.SelectSingleNode("(/*)"); 
0

如果你不使用XmlDocument的東西需要那麼Linq是你的朋友。

XDocument doc = XDocument.Load(@"C:\crruopto\135120068964590_v01.04-procCTe.xml"); 
XElement first = doc.GetDescendants().FirstOrDefault(); 
if(first != null) 
{ 
    //first.Name will be either nfeProc, canCTE or cteProc. 
} 
0

使用LINQ合作,XML是.NET中使用XML的最新和最有力的方式,爲您提供更多的權力和靈活性比之類的XmlDocument和XmlNode的。

獲取根節點是非常簡單的:

XDocument doc = XDocument.Load(@"C:\crruopto\135120068964590_v01.04-procCTe.xml"); 
Console.WriteLine(doc.Root.Name.ToString()); 

一旦你建立你不需要使用任何LINQ查詢或特殊檢查一個XDocument。您只需從XDocument中提取Root屬性即可。

0

謝謝,我已經解決了這種方式,第一部分

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