2012-06-04 45 views
1

美好的一天!如何訪問XML的某個部分?

如何訪問這部分XML並打印元素名稱? 請參考下圖。

enter image description here

我現在不能用以下代碼進步:

XmlDataDocument xmldoc = new XmlDataDocument();   
       XmlNode xmlnode; 
       FileStream fs = new FileStream(@"D:\Files\20120604\Data_120604-062516_003.xml", FileMode.Open, FileAccess.Read); 
       xmldoc.Load(fs); 


//MessageBox.Show("YUMDMMATMAS05"); 
+0

閱讀[問]。你嘗試了什麼?你讀過文檔嗎?你得到哪個錯誤?什麼是42? –

+0

這是我迄今爲止所做的並且無法在其上進行的操作:'XmlDataDocument xmldoc = new XmlDataDocument(); XmlNode xmlnode; FileStream fs = new FileStream(@「D:\ Files \ 20120604 \ Data_120604-062516_003.xml」,FileMode.Open,FileAccess.Read); xmldoc.Load(FS); ' – yonan2236

回答

2

如果你想要的行爲是得到根節點,那麼你就可以xmldoc.DocumentElement得到它。

您可以使用Name屬性獲取任何XMLElement的名稱。

+0

對不起,但我的方案是我有很多XML文件,我必須知道每個XML的第一個元素的名稱。例如,XML1有YUMDMMATMAS05,而XML2有第一個元素的YUMDMMATMAS05。我不知道第一個元素的名稱 – yonan2236

+0

@ yonan2236我的解決方案並不要求您知道第一個元素的名稱。我是說,在調用xmldoc.Load()後,通過在上面的代碼中使用xmldoc.DocumentElement.Name訪問第一個元素的名稱。 –

+0

對不起,我沒有馬上得到它,但它爲我工作。謝謝毛皮 – yonan2236

0

使用Regex

Pattern = @"\?>\s*?<(?<Name>.*?)>.*?</(1)>" 
0

如果您不需要的文檔的其餘部分則根本不看整個事情到內存XmlDataDocument(過時BTW)或XmlDocument,但使用XmlReader insted的(XmlTextReader是也有種過時):

using(var reader = XmlReader.Create(new FileStream(@"D:\Files\20120604\Data_120604-062516_003.xml", FileMode.Open, FileAccess.Read), new XmlReaderSettings { CloseInput = true, DtdProcessing = DtdProcessing.Ignore, IgnoreComments = true, IgnoreProcessingInstructions = true, IgnoreWhitespace = true })) 
      { 
       XmlNodeType nt; 
       do 
       { 
        nt = reader.MoveToContent(); 
        if(nt == XmlNodeType.Element) { 
         MessageBox.Show(nt.Name); 
         break; 
        } 
       } 
       while(nt != XmlNodeType.None) 
      }