私は Windows 8 アプリを構築しています。大きな XML ドキュメントから XML ノード全体とその子を文字列として抽出する必要があります。これまでのところ、それを行うメソッドは次のようになります。
public string GetNodeContent(string path)
{
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreWhitespace = true;
settings.ConformanceLevel = ConformanceLevel.Auto;
settings.IgnoreComments = true;
using (XmlReader reader = XmlReader.Create("something.xml", settings))
{
reader.MoveToContent();
reader.Read();
XmlDocument doc = new XmlDocument();
doc.LoadXml(reader.ReadOuterXml());
IXmlNode node = doc.SelectSingleNode(path);
return node.InnerText;
}
}
任意の形式の xpath を渡すと、ノードは null の値を取得します。リーダーを使用してルート ノードの最初の子を取得し、XMLDocument を使用してその xml から子を作成しています。Windows 8なので、どうやら、XPathSelectElementsメソッドを使用できず、これが私が考えられない唯一の方法です。これ、または他のロジックを使用してそれを行う方法はありますか?
ご回答ありがとうございます。
[アップデート]
XML に次の一般的な形式があるとします。
<nodeone attributes...>
<nodetwo attributes...>
<nodethree attributes... />
<nodethree attributes... />
<nodethree attributes... />
</nodetwo>
</nodeone >
「/nodeone/nodetwo」または「//nodetwo」を渡すと、結果としてnodetwoとそのすべての子がxml文字列の形式で取得されることを期待しています