2012-06-04 21 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) 
      }