【发布时间】:2021-06-17 03:20:24
【问题描述】:
我想从 XML 中提取数据并通过 XPath 将其转换为 DateTime。我有以下功能:
DateTime? GetXPathDate(string xPath, XDocument xDoc)
{
DateTime? result = null;
var element = xDoc.XPathSelectElement(xPath);
return result;
}
我可以找到元素,但问题是它包含在 CData 中:
<CarName>
<![CDATA[XXX Jan]]>
</CarName>
有没有办法通过 XDocument 忽略 CData 部分,或者我是否需要对自己进行正则表达式?
【问题讨论】:
-
您的示例不清楚 - 您已经显示了文档,但没有显示您希望找到数据的 xpath(或者甚至是您正在寻找的数据)。请提供一个更清晰、更完整的示例。
-
System.Xml.Linq 已经知道如何通过 XCData 使用 CDATA。你不需要正则表达式或任何东西。
-
我尝试了 /Root/Car/CarName/text() 但有以下问题:XPath 表达式评估为意外类型 System.Xml.Linq.XCData。我看到了那个帖子,但没有成功。
-
我很少使用 XPath,但是当我只是模拟一个示例时,XElement 足够聪明,可以将 cdata 内容作为值提供。因此,如果您的 xpath 正确,您需要解析为日期的字符串就是
element.Value
标签: c# xml xpath linq-to-xml