私は単純なものを見落としていますが、XDocumentからノードを再帰的に抽出するのは難しいです。私はそれが観測は子供を持っていない、この作品だけのように見えますがXDocumentでノードを再帰的に見つける
foreach (XElement element in Content.Descendants("observation"))
ExamineObservation(element);
を使用して、3つのすべての観測ノードを得ることができると思っ
<?xml version="1.0" encoding="iso-8859-1"?>
<content>
<operation></operation>
<entry>
<observation>
<templateId/>
<code></code>
<value></value>
<entryRelationship>
<observation>
<templateId/>
<code></code>
<value></value>
</observation>
</entryRelationship>
<entryRelationship>
<observation>
<templateId/>
<code></code>
<value></value>
</observation>
</entryRelationship>
</observation>
</entry>
</content>
:
は、私がこれに似たXMLを持っています。私も.Ancestorsと.DecentantNodesを試しましたが、私が望むものを得られませんでした。私は必要なものを得るための再帰的なメソッドを簡単に書くことができますが、既存のメソッドを使用することになります。特に、いくつかのプロジェクトでXMLを扱うことになります。私は明白な何かを欠いていますか
観測と言うノードはすべてコードと値を取得する必要があるので、以下の例では3つの観測ノードを処理する必要があります。観察ノードのネスティングおよび量は任意である。
ありがとうございました。
補遺
私がXMLに関する十分な情報を与えることがないかもしれないことを私に起こります。タグが違いを生み出すとは思っていませんでしたが、場合によってはタグを含める必要があります。以下は、私が解析しようとしている実際のメッセージの最初の数行です。私はいくつかのテキストをプライバシーのために "..."に置き換えました。
<?xml version="1.0" encoding="iso-8859-1"?>
<content xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<operation>update</operation>
<entry xmlns="urn:hl7-org:v3">
<observation classCode="OBS" moodCode="EVN">
<templateId root="..." />
<code code="..." codeSystem="..." codeSystemName="..." displayName="...">
</code>
<value xsi:type="..." code="..." codeSystem="..." codeSystemName="..." displayName="...">
</value>
<entryRelationship typeCode="...">
<observation classCode="..." moodCode="...">
私はあなたが 'Console.WriteLineを(element.Element( "コード"))書く場合は、ここで間違っているものをキャッチすることはできません;'あなたのforeachであなたを期待通りに3つのコードを取得します –
いいえ私はこれをトレースし、何も戻ってきません。 ExamineObservation(要素)を完全にスキップします。 xmlは名前空間を使用しています。それは違いをもたらすだろうか? – Tim
xeondevと合意しました。これはうまくいくはずです。 foreachループで 'Content'ノードをどのように初期化していますか? – Gjeltema