从xml元素获取值导致异常
本文关键字:异常 获取 xml 元素 | 更新日期: 2023-09-27 18:23:56
我想从下面的xml中获得成功值:
<PIEngineResponse xmlns="http://www.pervasive.com/">
<success>TRUE</success>
<proxyId>10.10.90.15_test_user{3312564C-6A06-533B-52F0-C8F97C413137}</proxyId>
<engineName>PIEngineController_Engine_245</engineName>
<response>
<NOSDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:NOSDocument" xsi:schemaLocation="NewNosXML.xsd">
如果我使用xpath,我得到:
/tns:PIEngineResponse/tns:success
导致错误的原因:
需要命名空间管理器或XsltContext。此查询具有前缀、变量或用户定义的函数。
我可以做些什么来获得成功值以避免此错误?或者我该如何避免最初的错误?
编辑:仍然没有运气的代码为:
using (TextReader r1 = File.OpenText(localFilePath))
{
XmlReader r = XmlReader.Create(r1);
XDocument doc = XDocument.Load(r1, LoadOptions.None);
XNamespace ns = "http://www.pervasive.com/";
string successValue = (string) doc.Root.Element(ns + "success");
}
暂时忽略命名约定。
我个人会使用LINQ to XML来启动它:
XDocument doc = ...;
XNamespace ns = "http://www.pervasive.com/";
string successValue = (string) doc.Root.Element(ns + "success");
如果真的想要使用XPath,则需要一个命名空间管理器(或XsltContext
,但听起来不像是在使用XSLT),正如异常所示-请参阅此答案以获取示例。