0

asp.c# を使用して、xml の特定の値を取得および編集することは可能ですか? たとえば、私のxmlファイル:

<posters>
  <poster>
    <quantity>100</quantity>
    <stock>100</stock>
    <price>88</price>
  </poster>
  <poster>
    <quantity>100</quantity>
    <stock>150</stock>
    <price>95</price>
  </poster>
  <poster>
    <quantity>200</quantity>
    <stock>100</stock>
    <price>95</price>
  </poster>
  <poster>
    <quantity>200</quantity>
    <stock>150</stock>
    <price>100</price>
  </poster>
</posters>

数量 == 200 & 在庫 == 100 および数量 == 100 &在庫 == 150 から 2 つの 95 があります。数量 == 200 および在庫 == 100 から値 95 を取得し、同じ 95 を変更せずに編集できますか数量 == 100 &在庫 == 150?

「SelectSingleNode」と「SelectNode」を使用しようとしましたが、役に立ちません。SQLのような結果を取得したい-「数量= 200、在庫= 100のポスターから価格を選択」。

助言がありますか?

XML からデータセットへ:

string xmlDocString = Server.MapPath("MyXMLFile.xml");
    DataSet dataSet = new DataSet();
    dataSet.ReadXml(xmlDocString);
    GridView1.DataSource = dataSet.Tables[0].DefaultView;
    GridView1.DataBind();
4

2 に答える 2

1

XPath 式とこの XML ライブラリを使用すると、次のようになります。

int quantity = 200;
int stock = 100;
int newPrice = 55;
XElement root = XElement.Load(file);
XElement poster = root.XPathElement("//poster[quantity={0} and stock={1}]", 
                                    quantity, stock);
poster.Set("price", newPrice, false); // false for set child ELEMENT value
于 2013-06-24T18:40:17.037 に答える
0

LINQ to XMLを使用できます。「SQLのような」コードを持つことができます

LINQPad で動作するコードの例を次に示します。

void Main()
{
    var xml = @"<posters>
  <poster>
    <quantity>100</quantity>
    <stock>100</stock>
    <price>88</price>
  </poster>
  <poster>
    <quantity>100</quantity>
    <stock>150</stock>
    <price>95</price>
  </poster>
  <poster>
    <quantity>200</quantity>
    <stock>100</stock>
    <price>95</price>
  </poster>
  <poster>
    <quantity>200</quantity>
    <stock>150</stock>
    <price>100</price>
  </poster>
</posters>";

    var doc = XDocument.Parse(xml);

var value = (from x in doc.Descendants("poster")
        where x.Element("stock").Value == "100" 
        && x.Element("quantity").Value == "200"
        select x.Element("price")).FirstOrDefault();

    if (value != null)
        value.SetValue("1000");

    value.Dump();
    doc.Dump();
}
于 2013-06-24T19:15:15.783 に答える