0

さまざまな深さレベルに存在するいくつかのノードの XPathExpression 選択を使用して、大きな XML ファイルを解析しています。

選択したノードを個別の XML ファイルにエクスポートし、すべての直接の祖先ノード (およびそれらの属性) を保持する最も簡単な方法は何ですか? C# が推奨されます。

ソース XML の例:

<a>
  <x>
  <b>
    <c/>
    <z/>
  </b>
  <c/>
</a>
<c/>
<d><e/></d>

「c」ノードに対するフィルタリングに期待されるターゲット XML

<a>
  <b>
    <c/>
  </b>
  <c/>
</a>
<c/>

編集: XPathExpression と XPathNodeIterator を使用しているのは、特定のノードを結果 XML に含める必要があるかどうかをテストするための追加のロジックがあるためです。XPathExpression だけでは十分ではありません。基本的に、一致する XPathNavigator 要素の配列があり、祖先構造を使用して XML に保存します。

4

2 に答える 2

2
string xml = @"<xml>
 <a>
  <x/>
  <b>
    <c/>
    <z/>
  </b>
  <c/>
</a>
<c/>
<d><e/></d></xml>";
    XmlDocument doc = new XmlDocument();
    doc.LoadXml(xml);
    XmlDocument results = new XmlDocument();
    XmlNode root = results.AppendChild(results.CreateElement("xml"));
    foreach (XmlNode node in doc.SelectNodes("/*/*[descendant-or-self::c]"))
    {
        root.AppendChild(results.ImportNode(node, true));
    }
    results.Save("out.xml");
于 2008-12-19T13:20:59.253 に答える