从字符串中读取数据XML
我的情况是这样的,我有一个字符串格式的xml数据。从字符串中读取数据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" />
从上面的字符串我需要每个节点的选择“值”并将其存储在一个datatable.How我能实现这个..
使用Linq to XML
:
XDocument doc = XDocument.Parse(xml_string);
var values = (from f in doc.Elements().Descendants()
select f.Attribute("Value").Value).ToArray();
的一种方式是将字符串转换为xmlDoc中,比你可以阅读xmlDoc中byusing LINQ:
字符串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
};
在.NET中可用于处理XML数据的许多选项中,XmlDocument远不是最好的选择。 – dtb 2012-04-26 10:44:46
@dtb那么你有什么建议? – erikH 2012-04-26 10:46:58
我建议[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 2012-04-26 10:52:15
XmlNodeList elementList = doc.GetElementsByTagName("*");
for (int i = 0; i < elementList.Count; i++)
{
string attrVal = elementList[i].Attributes["Value"].Value;
}
我会用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();
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-26 10:42:42