从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");
}

暂时忽略命名约定。

从xml元素获取值导致异常

我个人会使用LINQ to XML来启动它:

XDocument doc = ...;
XNamespace ns = "http://www.pervasive.com/";
string successValue = (string) doc.Root.Element(ns + "success");

如果真的想要使用XPath,则需要一个命名空间管理器(或XsltContext,但听起来不像是在使用XSLT),正如异常所示-请参阅此答案以获取示例。