2

私のXMLは次のようになります。

<product id="1">
    <name>A thing</name>
    <description>This is what it's like</description>
</product>

私はこのように見えるかもしれない例を探していました:

string productID = 1;
XDocument productsXML = XDocument.Load("Products.xml");
for item in productsXML {
    if (item.ID == productID) {
        productNameLabel.Text = item.name;
    }
}

つまり、単一のxml子要素を.aspxページに出力できるようになります。

A thing

それは理にかなっていますか?私は数時間例を探していて、必要な足場はもっとたくさんあると思い始めていますが、すべての例が非常に異なるため、どれをたどるかわかりません!

では、どのようにして単一のXML子要素の内容を取得し、それを.aspxに出力できますか?これを取る:

<product id="1">
    <name>A thing</name>
    <description>This is what it's like</description
</product>

そしてこれを出力します:

A thing
4

2 に答える 2

2

XPathを使用できます(でSystem.Xml.XPath

string value = productsXML.XPathSelectElement("//product[@id='1']/name").Value;
于 2012-11-30T19:31:31.257 に答える
0

この場合、LBの答えはかなり単純なので、私はそれに同意します。Linqが好きな場合(Linq to XMLオブジェクトであるXDocumentを使用していることに気づきました)、別の解決策を次に示します。

XDocument productsXML = XDocument.Load("Products.xml");
        string item = productsXML.Elements("product")
                                 .Where(p => p.Attribute("id").Value == productID)
                                 .First()
                                 .Element("name").Value;

productsXML.Elements("product")これにより、ドキュメント内のすべての製品ノードが取得されます。これにより、productiDに一致する
.Where(p => p.Attribute("id").Value == productID)製品ノードのみが取得されます。関数はノードのコレクションを返すため、これは最初のノードを取得します。これにより、呼び出された製品ノード内の要素が検索され、その値が返されます。id
.First().Where
.Element("name").Value;name

このような単純なスキーマの場合、XPathはそれほど冗長ではないように見えますが、そもそもXPathを知らないと、理解するのが少し難しくなります。Linqは(この例では)はるかに多くのコード行ですが、XPathを知らない場合ははるかに読みやすくなります。

于 2012-11-30T19:55:37.820 に答える