使用dom4j解析xml字符串
今天接到任务 解析v3入参字符串xml,于是莫怕!
1.创建document对象
public class XmlUtil {
//加载XML
public static Document load(String xml, String charsetName) {
Document document = null;
try {
InputStream inputStream = new ByteArrayInputStream(xml.getBytes(charsetName));
document = new SAXReader().read(inputStream);
} catch (UnsupportedEncodingException | DocumentException e) {
e.printStackTrace();
throw LogicException.of("his:" + xml);
}
return document;
}
}
2.去除xmlns=\"urn:hl7-org:v3\"
public String checkStatusInfoUpdate(String param) {
Map<String, String> result = new HashMap<>();
param = param.replace("xmlns=\"urn:hl7-org:v3\"", "");
Document document = XmlUtil.load(param, "utf-8");
//获取到遍历节点
List<Element> nodesList = document.selectNodes("//POOR_IN200902UV//controlActProcess//subject//placerGroup//component2//observationRequest");
for (Element element : nodesList) {
List<Node> items = element.selectNodes("id//item//@extension");
List<Node> state = element.selectNodes("statusCode//@code");
result.put("id", items.get(0).getStringValue());
result.put("code", state.get(0).getStringValue());
result.put(items.get(0).getStringValue(),state.get(0).getStringValue());
}
return "1";
}
3.demo文件
<POOR_IN200902UV ITSVersion="XML_1.0" xmlns="urn:hl7-org:v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:hl7-org:v3 ../multicacheschemas/POOR_IN200902UV.xsd">
<controlActProcess classCode="CACT" moodCode="EVN">
<subject typeCode="SUBJ" xsi:nil="false">
<placerGroup>
<component2>
<observationRequest >
<id>
<item extension="申请单号"/>
</id>
<statusCode code="状态代码" />
</observationRequest>
</component2>
</placerGroup>
</subject>
</controlActProcess>
</POOR_IN200902UV>