如何使用XDocument在c#中解析复杂类型xml中的文本?

时间:2014-06-27 13:37:09

标签: c# xml linq-to-xml

<?xml version="1.0" encoding="UTF-8"?>
<meta>
    <field type="xs-string" name="AssetId">TF00000002</field>
    <field type="xs-string" name="Title">TitleOfAsset</field>
</meta>

我使用函数

将此XML加载到XDocument中
XDocument doc = XDocument.Parse(xmlData)

但是,我希望能够检索文本字段“TF00000002”和“TitleOfAsset”......我该怎么做呢?

templateMetaData.assetID = doc
    .Descendants()
    .Where(p => p.Name.LocalName == "AssetId")
    .ToString();

返回:

 System.Linq.Enumerable+WhereEnumerableIterator`1[System.Xml.Linq.XElement] 

任何人都可以对此发光吗?

1 个答案:

答案 0 :(得分:0)

在您的查询中,您在ToString上调用了IEnumerable<XElement>,它永远不会给您预期的结果,而是查找field下的Root元素并获取他们的值:

var values = doc.Root
           .Elements("field")
           .Select(element => (string)element);

如果您想使用name属性访问您的值,可以使用Dictionary

var values = doc.Root
           .Elements("field")
           .ToDictionary(x => (string)x.Attribute("name"), x => (string)x);

然后您可以访问AssetId

的值
var id = values["AssetId"];