0

以下の XML ファイルからセクションを C# で読み取りたいと考えています。

 <?xml version="1.0" encoding="utf-8" > 
 <DataSet>
 <xs:schema id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
 <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
 <xs:complexType>
 <xs:choice minOccurs="0" maxOccurs="unbounded">
 <xs:element name="Table">
 <xs:complexType>
 <xs:sequence>
  <xs:element name="Column1" type="xs:string" minOccurs="0" /> 
  </xs:sequence>
  </xs:complexType>
  </xs:element>
  </xs:choice>
  </xs:complexType>
  </xs:element>
  </xs:schema>
 <diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
 <NewDataSet>
 <Table diffgr:id="Table1" msdata:rowOrder="0">
  <Column1><Properties><Property>.....

ノードの下のノードを抽出したいColumn1PropertiesノードにはたくさんのノードPropertyがあるのでProperties、すべてのノードを持つノードが必要Propertyです。

C# でノードを取得する最も簡単で効率的な方法を教えてください。

4

1 に答える 1

0

Linq-to-XMLクラスを使用して文字列を解析し、次にXPath式を使用して必要なノードを選択できます。

XElement doc = XElement.Parse(s); //where s is a string containing the XML
var properties = doc.XPathSelectElements("//Column1/Properties");

propertiesこれで、必要なノードの列挙可能オブジェクトが含まれます。

すべてのプロパティノードを反復処理する場合は、次のように実行できます。

foreach(var pp in properties)
{
    foreach(var p in pp.Elements("Property"))
    {
         //do something
    }
}
于 2013-02-18T09:15:28.170 に答える