如何在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] 

有谁能点灯一下吗?

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

在您的查询中,您在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"];