首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >响应中文本数据的Xquery转换

响应中文本数据的Xquery转换
EN

Stack Overflow用户
提问于 2018-05-17 11:37:58
回答 1查看 230关注 0票数 0

我想要为下面的数据起草一个xquery转换。在这里,作为服务响应错误的一部分,我将获得低于有效负载的数据,并需要捕获ErrorCode元素中的数据。

我在这里遇到的挑战是,这不是XML结构的一部分,而是CDATA标记的一部分。

你能给我建议一下如何在变量中得到这个值吗?

假设我将这个结构作为$Fault的一部分,现在需要在一个新变量$FaultCode中分配ErrorCode

$Fault/con:details/con1:ErrorResponseDetail/con1:detail/ * $FaultCode =$FaultCode*

我不知道如何捕捉到这个更详细的元素。

代码语言:javascript
复制
<con:fault xmlns:con="http://www.bea.com/wli/sb/context">
   <con:errorCode>382502</con:errorCode>
   <con:reason>eceived an error response</con:reason>
   <con:details>
      <con1:ErrorResponseDetail xmlns:con1="http://www.bea.com/wli/sb/stages/transform/config">
         <con1:detail>
         <![CDATA[<Error xmlns="http://servic.abcd.net/V1">
  <ErrorCode>DATA_AVAILABILITY</ErrorCode>
  <ErrorDescription>{"description":"No Cdata for )"}</ErrorDescription>
</Error>]]></con1:detail>
         <con1:http-response-code>404</con1:http-response-code>
      </con1:ErrorResponseDetail>
   </con:details>
   <con:location>
      <con:node>TestPPNode</con:node>
      <con:pipeline>TestPPNode_request</con:pipeline>
      <con:stage>Test Stage</con:stage>
      <con:path>request-pipeline</con:path>
   </con:location>
</con:fault>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-17 11:46:53

假设XQuery 3.1与parse-xml函数(https://www.w3.org/TR/xpath-functions/#func-parse-xml)一起使用,可以使用

代码语言:javascript
复制
declare namespace con="http://www.bea.com/wli/sb/context";
declare namespace con1="http://www.bea.com/wli/sb/stages/transform/config";
declare namespace V1 = "http://servic.abcd.net/V1";



/con:fault/con:details/con1:ErrorResponseDetail/con1:detail!parse-xml(.)/V1:Error/V1:ErrorCode/data()

要获得字符串值DATA_AVAILABILITY,请参阅https://xqueryfiddle.liberty-development.net/6qM2e27以获取演示。

在XQuery 1中,不需要XML解析来正确地解决这个问题,但是您当然可以尝试使用字符串函数来提取数据。

代码语言:javascript
复制
/con:fault/con:details/con1:ErrorResponseDetail/con1:detail/substring-before(substring-after(., '&lt;ErrorCode>'), '&lt;/ErrorCode>')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50390505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档