从xml元素获取值导致异常

时间:2012-02-10 11:07:56

标签: c# xml

我想从下面的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");
}

暂时忽略命名约定。

1 个答案:

答案 0 :(得分:0)

我个人会使用LINQ to XML来开始:

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

如果确实想要使用XPath,则需要命名空间管理器(或XsltContext,但听起来不像是在使用XSLT),就像异常一样建议 - 请参阅this answer以获取示例。