2012-06-04 4 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

Прочтите [ask]. Что вы пробовали? Вы прочитали документацию? Какую ошибку вы получаете? Что такое 42? –

+0

Это то, что я сделал до сих пор и не смог проделать над этим: 'XmlDataDocument xmldoc = new XmlDataDocument(); XmlNode xmlnode; FileStream fs = новый FileStream (@ "D: \ Files \ 20120604 \ Data_120604-062516_003.xml", FileMode.Open, FileAccess.Read); xmldoc.Load (фс); ' – yonan2236

ответ

2

Если поведение вы хотите, чтобы получить корневой узел, то вы можете получить его с xmldoc.DocumentElement.

Вы можете получить имя любого XMLElement, используя свойство Name.

+0

извините, но мой сценарий: у меня много XML-файлов, и мне нужно знать имя самого первого элемента для каждого xml. Например, XML1 имеет YUMDMMMMMM05 и XML2 имеет YUMDMMATMAS05 для первого элемента. У меня нет знака имени первого элемента – yonan2236

+0

@ yonan2236 Мое решение не требует, чтобы вы знали имя первого элемента. Я говорю, что вы обращаетесь к имени первого элемента, используя xmldoc.DocumentElement.Name в своем коде выше, после вызова xmldoc.Load(). –

+0

Извините, я не получил его сразу, но он работает для меня. Thanks Fur – yonan2236

0

Использование Regex

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

Если вы не нуждаетесь в остальной части документа, то не читать всю вещь в память с XmlDataDocument (устаревшее кстати) или 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) 
      } 
Смежные вопросы