2016-09-30 79 views
0

我想用XPath编写一个表达式,用于将我xml消息头中的属性值与特定值进行比较,以将其指向适当的文件夹。 XML头是用于比较骆驼属性值的表达式Java DSL

?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="cda\render\cda.xsl"?> 
    <Books xmlns="urn:hl7-org:v3" 
     xmlns:classCode="DOCCLIN" xmlns:moodCode="EVN" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="urn:hl7-org:v3 ./cda_r2_normativewebedition2010/infrastructure/cda/CDA.xsd"> 
     <realmCode code="DE" /> 
     <typeId root="2.16.840.1.113883.1.3" extension="POCD_HD000040" /> 
     <templateId root="2.16.840.1.113883.10.20.29" /> 
     <templateId root="2.16.840.1.113883.10.20.33" /> 
     <templateId root="2.16.840.1.113883.10.20.33.1.1" /> 
     <id extension="2015121415313522" /> 
     <code code="12.3.34.65" codeSystem="2.16.840.1.113883.6.1" 
      codeSystemName="LOINC" displayName="Document" /> 
     <title>Prices</title> 
     <effectiveTime value="201512141531+0000" /> 
     <confidentialityCode code="N" codeSystem="2.16.840.1.113883.5.25" /> 
     <languageCode code="de-DE" /> 

我想比较某一节点attirbute(属性码元的代码)的值并将其引导到保持真正的文件夹它。

我写的东西像

from("file:testxml/") 
       .choice() 
       .when() 
//    .xpath("urn:hl7-org:v3:Books/urn:hl7-org:v3:code/@code = '12.3.34.65'") 
       .xpath("urn:hl7-org:v3:ClinicalDocument/urn:hl7-org:v3:code[@code='12.3.34.65']") 
       .to("file:xPath/") 
       .to("direct:xpath"); 

      } 

我要检查的属性的值是否是'12 .3.34.65' 。请你纠正我,让我知道如何以正确的方式写xpath表达式。

非常感谢!

回答

0

您的示例x​​ml无效。代码元素的属性代码也不是'12.3.34.65'。请尝试在下面将输出重定向到destinationFolder。

from("file:testxml") 
.choice() 
    .when() 
    .xpath("/Books/code[@code='x.x.x.x']") 
    .to("file:destinationFolder"); 
+0

你是对的属性值,但我错误地粘贴了抽象值。我现在纠正了它。我使用值'12.3.3.6.6'测试了XML。你写的代码和我写的代码一样,但没有名字空间。如果没有名称空间参考,表达式将不起作用。 – Lucky