Простой LINQ to XML не работает - PullRequest
1 голос
/ 07 апреля 2011

У меня есть простой XML, который я хотел бы запросить для мнемонической коллекции.

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<logs version="1.3.1.1" xmlns="http://www.witsml.org/schemas/131">
    <log>
        <startIndex uom="m">200.29</startIndex>
        <endIndex uom="m">209.73</endIndex>
        <logCurveInfo>
            <mnemonic>DEPTH</mnemonic>
        </logCurveInfo><logCurveInfo>
            <mnemonic>VDEPTH</mnemonic>
        </logCurveInfo>
        <logCurveInfo>
            <mnemonic>ropAv1</mnemonic>
        </logCurveInfo>
        <logCurveInfo>
            <mnemonic>wobAv1</mnemonic>
        </logCurveInfo>
        <logCurveInfo>
            <mnemonic>hkldAv1</mnemonic>
        </logCurveInfo>
        <logData>
            <data />
        </logData>
    </log>
</logs>

Я пытался,

XDocument xDoc = XDocument.Load(@"e:\sampleXml.xml");

var q = from c in xDoc.Descendants("logCurveInfo")
        select c.Element("mnemonic").Value;

foreach (string item in q)
{
    MessageBox.Show(item);
}

Хотя запрос выполняется, но яничего не получаю как вывод.Я ожидаю, что каждая мнемоника будет отображаться в окне сообщения в цикле.

1 Ответ

5 голосов
/ 07 апреля 2011

Проблема заключается в том, как решаются пространства имен.Вам нужно изменить код на что-то вроде:

XDocument doc = XDocument.Load(@"e:\sampleXml.xml");

XNamespace xmlns = "http://www.witsml.org/schemas/131";

var q = from c in doc.Descendants(xmlns+"logCurveInfo")
        select c.Element(xmlns+"mnemonic").Value;

foreach (string item in q)
{
    MessageBox.Show(item);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...