С учетом следующего XML:
<Animals xmlns="http://www.company.com/Global/US">
<Mammals>
<Animal>
<Type>
<Name>Cat</Name>
<Breed>Ally Cat</Breed>
</Type>
<Color>
<R>0</R>
<G>0</G>
<B>0</B>
</Color>
</Animal>
<Animal>
<Type>
<Name>Dog</Name> <-- I know this
<Breed>Weimeraner</Breed>
</Type>
<Color>
<R>190</R> <- I need the value of this
<G>190</G>
<B>190</B>
</Color>
</Animal>
<Mammals>
</Animals>
Как я могу получить целочисленное значение для узла R цвета, если я знаю, что Имя - "Собака"?
не работает для меня.
var xmlDoc = new XmlDocument(xml);
var nsm = new XmlNamespaceManager(_xmlDoc.NameTable);
nsm.AddNamespace("ns", "http://www.company.com/Global/US");
var typeNode = xmlDoc.SelectSingleNode("/ns:Animals/ns:Mammals/ns:Animal/ns:Type/ns:Name[. = 'Dog']", nsm);
var r_val = typeNode.ParentNode.ParentNode.SelectSingleNode("/ns:Color/ns:R", nsm).InnerText;
typeNode в этом коде дает мне правильный узел, но затем переходит к узлу дедушки и выбора внутри, что дает мне ноль, и поэтому InnerText взрывается.
Есть ли лучшее выражение XPath, которое я могу использовать, чтобы получить это?
Это должно быть в c # 2.0, поэтому, к сожалению, Linq и XDocument не могут поддерживаться.
Спасибо !!