1

私の状況はこのようなもので、文字列形式のxmlデータがあります。

<?xml version="1.0" encoding="utf-16"?>
<Tree AllowNodeEditing="True" ShowLineImages="False" CheckBoxes="True" EnableAjaxSkinRendering="False" AutoPostBackOnCheck="True" AutoPostBack="True">
 <Node Text="IMG_1468.JPG" Value="../../CMS/Images/Fotogalerie/548/IMG_1468.JPG" Checked="True" Selected="True" tekst="Afbeelding IMG_1468.JPG" thumb="../../CMS/Images/Thumbs/548/IMG_1468.JPG" />

上記の文字列から、各ノードの「値」を選択してデータテーブルに保存する必要があります。これを実現するにはどうすればよいですか。

4

5 に答える 5

3

1つの方法は、文字列をxmldocに変換することです。これは、LINQを使用してxmldocを読み取ることができる方法ではありません。

XMLへの文字列:

    String rawXml =
              @"<root>
                    <person firstname="Riley" lastname="Scott" />
                    <person firstname="Thomas" lastname="Scott" />
                </root>";
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(rawXml);



var lv1s = from lv1 in xdoc.Descendants("person")
           select new { 
               firstname = lv1.Attribute("firstname").Value,
                lastname = lv1.Attribute("lastname").Value
           };
于 2012-04-26T10:42:49.320 に答える
3

XElementクラスを使用します。

XElement xmlTree = XElement.Parse("yourXMLString");

次に、XElementメソッドを使用して各要素を分析できます。次に例を示します。

foreach (XElement el in xmlTree.Elements())
   // Do what you want with el

クエリすることもできます。

<Tree>
  <Node Text="IMG_1468.JPG" Value="../../CMS/Images/Fotogalerie/548/IMG_1468.JPG" />
</Tree>

string yourValue = xmlTree.Elements("Node")
                      .Where(x => (string) x.Attribute("Text") == "IMG_1468.JPG")
                      .Select(x => (string) x.Attribute("Value"))
                      .Single();
于 2012-04-26T10:57:23.543 に答える
2

使用Linq to XML

XDocument doc = XDocument.Parse(xml_string);
var values = (from f in doc.Elements().Descendants()
              select f.Attribute("Value").Value).ToArray();
于 2012-04-26T10:54:06.497 に答える
1
XmlNodeList elementList = doc.GetElementsByTagName("*");
for (int i = 0; i < elementList.Count; i++)
{
    string attrVal = elementList[i].Attributes["Value"].Value;
}
于 2012-04-26T10:56:56.287 に答える
1
XDocument doc = XDocument.Parse(xml);
var values = from element in doc.XPathSelectElements("/Tree/Node")
                     where element.Attribute("Value") != null
                     select (element.Attribute("Value").Value);
于 2012-04-26T11:01:58.790 に答える