-3

私はそれを解析してphpの要素を取得する必要があります単純なxmlファイルを使用するだけですが、C#経由で可能ですか

    <answers>
<answer ID="START">
<text>VVLV?</text>
<id>0</id>
<responses>

<response id="1">
<key>!1</key>
<product> 123123 </product>
<command>goto ANSWER_1</command>
</response>

<response id="2">
<key>!2</key>
<product> 213sad </product>
<command>goto ANSWER_2</command>
</response>

<response id="3">
<key>!3</key>
<product>dfbdfgsdf </product>
<command>goto ANSWER_3</command>

</response>

</responses>

</answer>

<answer ID="ANSWER_1">
<text>dfbdfgb?</text>
<id>1</id>
<responses>

<response id="1">
<key>!1</key>
<product> 123 </product>
<command>check_product 1 goto ANSWER_9 ANSWER_11</command>
</response>

<response id="2">
<key>!2</key>
<product> 321 </product>
<command>check_product 1 goto ANSWER_9 ANSWER_12</command>
</response>

<response id="3">
<key>!3</key>
<product> asd 3 </product>
<command>check_product 1 goto ANSWER_9 ANSWER_11</command>

</response>

</responses>

</answer>


<answer ID="ANSWER_2">
<text>asd?</text>
<id>2</id>
<responses>

<response id="1">
<key>!1</key>
<product> ads </product>
<command>goto ANSWER_4</command>
</response>

<response id="2">
<key>!2</key>
<product> asdasd </product>
<command>goto ANSWРІER_2</command>
</response>

<response id="3">
<key>!3</key>
<product> dscdsc</product>
<command>goto ANSWER_3</command>

</response>

</responses>

</answer>

<answer ID="ANSWER_3">
<text>asdasd</text>
<password>1</password>
<id>3</id>
<responses>

<response id="1">
<key>!1</key>
<product> asdasd </product>
<command>goto ANSWER_0</command>
</response>

<response id="2">
<key>!2</key>
<product>  </product>
<command>goto ANSWER_2</command>
</response>

<response id="3">
<key>!3</key>
<product> Testqdawd 3 </product>
<command>goto ANSWER_3</command>

</response>

</responses>

</answer>

C# で解析する方法、たとえば ID="START"->responses->response with id 3->key で elent の値を取得する方法

4

1 に答える 1

1

LINQ to XMLについて読む必要があります。そして、ここで質問する前に、間違いなくそれを行うべきでした!

メソッドを使用すると、XML をオブジェクトXDocument.Loadに簡単にロードできます。XDocument

var dox = XDocument.Load("Input.txt");

次に、標準の LINQ to XML 構文を使用してクエリを実行します。

var response = (from a in dox.Root.Elements("answer")
                where (string)a.Attribute("ID") == "ANSWER_1"
                from r in a.Element("responses").Elements("response")
                where (int)r.Attribute("id") == 1
                select r).FirstOrDefault();

または XPath セレクター:

var response = dox.XPathSelectElement("answers/answer[@ID='ANSWER_1']/responses/response[@id='1']");
于 2013-03-17T20:25:06.853 に答える