我想从下面的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");
}
暂时忽略命名约定。
答案 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以获取示例。