2

私の .XML データベースは次のようになります。

<root>
    <Lemma>
        <Lemma.LemmaSign>cat</Lemma.LemmaSign> 
        <Lemma.PartOfSpeech>(noun)</Lemma.PartOfSpeech> 
        <Lemma.UsageLabel>(kt)</Lemma.UsageLabel>
        <Sense>
            <TE>
                <TE.TE> animal</TE.TE>
            </TE>
            <Pronunciation>/ 
                <Pronunciation.Pronunciation>[coot]</Pronunciation.Pronunciation>/
            </Pronunciation>
            :
            <Example>
                <Example.Example> it's a cat</Example.Example>
                <Example.Translation> it's animal</Example.Translation>
                |
            </Example>
        </Sense>
    </Lemma>
</root>

それが私のコードです:

var elements = XElement.Load("objects.xml");
var query1 = from query in elements.Descendants("Lemma")
            let null_LemmaSign = query.Element("Lemma.LemmaSign")
            let null_TE = query.Element("TE.TE")
            where wyszuk == query.Element("Lemma.LemmaSign").Value
            select new
            {
              word = null_LemmaSign == null ? "none" : null_LemmaSign.Value,
              te = null_TE == null ? "none" : null_TE.Value,
            };

foreach (var e in query1)
{
 MessageBox.Show(e.word.ToString() + " - " + e.te.ToString());
}

そして問題は、出力が次のようになることです: cat - none であり、 cat - animal である必要があります

.xml から TE.TE を取得するには?

4

1 に答える 1

3

<TE.TE>コードは、それが の直接の子であると想定していますが<Lemma>、そうではありません。<TE.TE>の子であり、<TE>の子であり、の子で<Sense>あり、の子です<Lemma>。コードは次のように調整する必要があります。

let null_TE = query.Element("Sense").Element("TE").Element("TE.TE")

簡単にするために、jimmy_keen が示唆するように、以下を使用できますDescendants

let null_TE = query.Descendants("TE.TE").FirstOrDefault()
于 2012-06-30T14:05:03.007 に答える