2015-08-31 3 views
-1

Это XML-файл Я загрузки:Как получить элемент xml по имени тега?

<?xml version="1.0"?> 
<Table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <child1> 
    <child2></child2> 
    </child1> 
</Table> 

Я пытаюсь получить элемент <child2>.

Я использую следующий код:

var xroot = XElement.Load(filename); 
var el = xroot.Element("Table"); 

Вторая строка всегда возвращает null.

+0

'xroot .Root'? .. – Eser

ответ

1

Вам не нужна линия var el = xroot.Element("Table");.

Элемент var xroot содержит элемент <Table> (так как это корневой элемент документа XML).


Основываясь на ваш комментарий, этот код работает для меня:

var xroot = XElement.Load(filename); 
var el = xroot.Element("child1").Element("child2"); 

или в качестве альтернативы, чтобы получить все "Child2" узлов в документе:

var xroot = XElement.Load(filename); 
var el = xroot.Element("child1").Element("child2"); 
foreach (XElement child2 in xroot.Descendants("child2")) 
{ 
    ... 
} 
+0

Хм ... это тоже не работает. Теперь я делаю xroot.Element («child1») и не может найти первый элемент в '

'. Это выглядит так: '
' На самом деле, я хочу, чтобы текстовое содержимое было из 'child2'. Ухх, почему все это происходит навсегда с .NET. – pixelmike

+0

@pixelmike 'почему все происходит навсегда с .NET.' Потому что вы попадаете в проблему [XY problem] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). 'xroot.Descendants (" child2 ")' – Eser

0

Хорошо, я вижу 1 пустой элемент (таблица) с 2 атрибутами в вашем примере, правильно?

Кажется правильным, что первый (и единственный элемент) «Таблица» имеет значение null, не имеет текстового содержимого.

1
var xmlDoc = new XmlDocument(); 
xmlDoc.Load('yourXmlFile'); // or xmlDoc.LoadXml('your xml'); 
var mainXmlNode = xmlDoc.DocumentElement; // this now holds information about your 'table' node 
+0

Спасибо, что работает. У другого класса XML есть ужасная документация. – pixelmike

+0

@pixelmike, то, пожалуйста, отметьте это как принятый ответ, чтобы другим людям с одинаковой проблемой было легче найти ответ – Nissim

Смежные вопросы