如何在c#中使用XDocument解析复杂类型xml的文本
本文关键字:复杂 类型 xml 文本 XDocument | 更新日期: 2023-09-27 18:10:28
<?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"answers"TitleOfAsset"…我该怎么做呢?
templateMetaData.assetID = doc
.Descendants()
.Where(p => p.Name.LocalName == "AssetId")
.ToString();
的回报:
System.Linq.Enumerable+WhereEnumerableIterator`1[System.Xml.Linq.XElement]
有谁能点灯一下吗?
在您的查询中,您在IEnumerable<XElement>
上调用ToString
,这将永远不会给您预期的结果,而是在Root
下查找field
元素并获得它们的值:
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"];