2012-04-26 15 views
1

私の状況はこのようなものですが、私は文字列形式のxmlデータを持っています。私はこれを達成することができ、各ノードの「値」を選択し、datatable.Howに保管する必要があり、文字列の上から文字列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" /> 

..

+0

アトゥールは親切ので、少し大きなコードを投稿あなたの文字列を理解できること。 –

答えて

2

使用Linq to XML

XDocument doc = XDocument.Parse(xml_string); 
var values = (from f in doc.Elements().Descendants() 
       select f.Attribute("Value").Value).ToArray(); 
3

一つの方法は、に文字列を変換することです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 
      }; 
あなたはLINQをbyusing XMLDOCを読むことができるよりもXMLDOC、
+2

XmlDocumentは、XMLデータを扱うために.NETで利用できる多くのオプションのうち、最も優れたものとはかけ離れています。 – dtb

+0

@dtbそれであなたは何をお勧めしますか? – erikH

+0

[LINQ to XML](http://msdn.microsoft.com/en-us/library/bb387098.aspx)、つまり[XDocument](http://msdn.microsoft.com/en-us)をお勧めします/library/system.xml.linq.xdocument.aspx)。 – dtb

1
XmlNodeList elementList = doc.GetElementsByTagName("*"); 
for (int i = 0; i < elementList.Count; i++) 
{ 
    string attrVal = elementList[i].Attributes["Value"].Value; 
} 
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(); 
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); 
関連する問題