私はここで何か間違っていると思っています。私はオブジェクトに解析しようとしているxmlファイルの孫要素を取得するためにXDocument.Descendantsを使用しています。しかし、私はそれを実行しようとするたびにヌル値を取得しています。null値を返すXDocument.Descendants
IEnumerable<PatientClass> template = (IEnumerable<PatientClass>)(from templates in xDocument.Descendants("dataTemplateSpecification")
select new PatientClass
{
PatientId = int.Parse(templates.Descendants("element").Single(el => el.Attribute("name").Value=="PatientId").ToString()),
EMPIID = int.Parse(templates.Descendants("element").Single(el => el.Attribute("name").Value=="EMPIID").ToString())
});
<dataTemplateSpecification id="id1" name="name1" >
<templates xmlns="">
<template>
<elements>
<element id="element0" name="PatientId" display="Patient ID" dataType="String" visable="true" readOnly="false" value="4563">
<mapping path="//Template/TemplateData/ACOData/PATIENT_ID" />
</element>
<element id="element1" name="PopulationPatientID" display="Population Patient ID" dataType="String" visable="true" readOnly="true" enc="2098" value="6407">
<mapping path="//Template/TemplateData/ACOData/POPULATION_PATIENT_ID" />
</element>
<element id="element2" name="EMPIID" display="EMPIID" dataType="String" visable="true" readOnly="true" value="">
<mapping path="//Template/TemplateData/ACOData/EMPI" />
</element>
</elements>
</template>
</templates>
</dataTemplateSpecification>
は今...私たちはそれは私が使用しているXMLであると仮定してみましょう...私たちはそれは私が使用していますLINQクエリの範囲だったと仮定しましょう、上記のクエリを機能させるには名前空間が必要でしょうか?私は望んでいない。それは私のXMLを書き直さなければならないことを意味します...本当に、本当に私のために荒いです。
あなたは' xDocument.Descendants()ここで、(X => x.Name.LocalName == "dataTemplateSpecification")を試みることができます。 – Bazzz
投稿する前にコードを整理してください。あなたはそこにコメントアウトされたコードを持っています、そして、あなたは改行を挿入する前にどのくらいのコードを持っていなければなりませんか? –
'int'に要素全体を解析しようとしているため、あなたのコードは' FormatException'を 'int.Parse()'にスローします。しかし、それは私のために 'null'を返しません。 'dataTemplateSpecification'は本当に文書のルートですか?もしそうでなければ、本当のルートは 'xmlns'属性を持っていますか? – svick