From 97a0504a5c63143d06496a80f82a921b216d538d Mon Sep 17 00:00:00 2001 From: wyb <1977763549@qq.com> Date: Thu, 29 Jun 2023 15:57:13 +0800 Subject: [PATCH] =?UTF-8?q?xmlutil=E7=BA=BF=E7=A8=8B=E5=AE=89=E5=85=A8?= =?UTF-8?q?=E4=B8=8E=20=E9=A1=B9=E7=9B=AE=E5=90=AF=E5=8A=A8=E7=8E=AF?= =?UTF-8?q?=E5=A2=83=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/docus/server/AppRunBootstrap.java | 9 +- .../com/docus/server/report/util/XmlUtil.java | 558 +----------------- .../impl/SdryReportServerImplTest.java | 7 + 3 files changed, 19 insertions(+), 555 deletions(-) diff --git a/src/main/java/com/docus/server/AppRunBootstrap.java b/src/main/java/com/docus/server/AppRunBootstrap.java index b83231f..02d950c 100644 --- a/src/main/java/com/docus/server/AppRunBootstrap.java +++ b/src/main/java/com/docus/server/AppRunBootstrap.java @@ -8,6 +8,8 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableAsync; +import java.util.Properties; + @Slf4j @SpringBootApplication(scanBasePackages ={"com.docus"}) @@ -15,7 +17,10 @@ import org.springframework.scheduling.annotation.EnableAsync; @EnableAsync public class AppRunBootstrap { public static void main(String[] args) { - System.setProperty("javax.xml.parsers.DocumentBuilderFactory","com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl"); - SpringApplication.run(AppRunBootstrap.class,args); + Properties props = System.getProperties(); + props.setProperty("org.apache.cxf.stax.allowInsecureParser", "1"); + props.setProperty("UseSunHttpHandler", "true"); + System.setProperty("javax.xml.parsers.DocumentBuilderFactory", "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl"); + SpringApplication.run(AppRunBootstrap.class, args); } } diff --git a/src/main/java/com/docus/server/report/util/XmlUtil.java b/src/main/java/com/docus/server/report/util/XmlUtil.java index e199e2e..79d8e6b 100644 --- a/src/main/java/com/docus/server/report/util/XmlUtil.java +++ b/src/main/java/com/docus/server/report/util/XmlUtil.java @@ -245,7 +245,11 @@ public class XmlUtil { private static DocumentBuilderFactory getDocumentBuilderFactory() throws ParserConfigurationException { DocumentBuilderFactory dbf = XmlHelperHolder.documentBuilderFactory; if (!preventedXXE) { - preventXXE(dbf); + synchronized (XmlUtil.class) { + if (!preventedXXE) { + preventXXE(dbf); + } + } } return dbf; } @@ -294,557 +298,5 @@ public class XmlUtil { private static DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); private static XPathFactory xPathFactory = XPathFactory.newInstance(); } - private static String str; - static { - str=" \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " 59 \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " 205室 \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " 耳鼻咽喉头颈外科 \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " 2号楼16楼西区 \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " 南方医科大学顺德医院 \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - "
\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " 突发特发性听觉丧失 \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - "
\n" + - "
\n" + - " \n" + - " \n" + - "
\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " 常规 \n" + - " \n" + - " \n" + - "
\n" + - "
\n" + - " \n" + - " \n" + - "
\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - "
\n" + - "
\n" + - " \n" + - " \n" + - "
\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - "
\n" + - "
\n" + - " \n" + - " \n" + - "
\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " 治愈 \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " 张存良 \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " 耳鼻咽喉头颈外科 \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " 突发特发性听觉丧失 \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " 文本 \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " 乳房病类 \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - "
\n" + - "
\n" + - "
\n" + - "
\n" + - "
\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " 治愈 \n" + - " \n" + - " O \n" + - " \n" + - " 0 \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " 01 \n" + - " \n" + - " 出院医嘱 \n" + - " \n" + - "
\n"; - } - public static void main(String[] args) { - XmlUtil a=XmlUtil.of(str); - Node node=null; - //id-消息流水号 - node = a.getNode("/PRPA_HIP0032/id/@extension"); - String serialId = node.toString(); - System.out.println(serialId); - //住院流水号 - node = a.getNode("/PRPA_HIP0032/controlActProcess/subject/encounterEvent/item/@extension"); - String jzh = node.toString(); - System.out.println(jzh); - //住院号标识 - node = a.getNode("/PRPA_HIP0032/controlActProcess/subject/encounterEvent/id/item/@extension"); - String inpatientNo = node.toString(); - System.out.println(inpatientNo); - //住院次数[] - node = a.getNode("/PRPA_HIP0032/controlActProcess/subject/encounterEvent/lengthOfStayQuantity[@unit='次']/@value"); - String admissTimes=node.toString(); - System.out.println(admissTimes); - //姓名 - node = a.getNode("/PRPA_HIP0032/controlActProcess/subject/encounterEvent/subject/patient/patientPerson/name/item/part/@value"); - String name = node.toString(); - System.out.println(name); - //入院日期时间 - node = a.getNode("/PRPA_HIP0032/controlActProcess/subject/encounterEvent/effectiveTime/low/@value"); - String admissDate = node.toString(); - System.out.println(admissDate); - //出院日期时间 - node = a.getNode("/PRPA_HIP0032/controlActProcess/subject/encounterEvent/effectiveTime/high/@value"); - String disDate = node.toString(); - System.out.println(disDate); - //入院诊断科室名称[] - node = a.getNode("/PRPA_HIP0032/controlActProcess/subject/encounterEvent/component[@displayName='入院诊断']/section/entry[@displayName='入院诊断-西医条目']/observation/performer/assignedEntity/representedOrganization/name"); - String admissDeptName = node.getTextContent(); - System.out.println(admissDeptName); - //出院诊断科室名称[] - node = a.getNode("/PRPA_HIP0032/controlActProcess/subject/encounterEvent/component[@displayName='出院诊断']/section/entry[@displayName='出院诊断-西医条目']/observation/performer/assignedEntity/representedOrganization/name"); - String disDeptName = node.getTextContent(); - System.out.println(disDeptName); - //主治医师[] - node = a.getNode("/PRPA_HIP0032/controlActProcess/subject/encounterEvent/authenticator[@displayName='主治医师']/assignedEntity/assignedPerson/name"); - String attendingName = node.getTextContent(); - System.out.println(attendingName); - } } diff --git a/src/test/java/com/docus/server/report/webservice/impl/SdryReportServerImplTest.java b/src/test/java/com/docus/server/report/webservice/impl/SdryReportServerImplTest.java index a868445..5ea0556 100644 --- a/src/test/java/com/docus/server/report/webservice/impl/SdryReportServerImplTest.java +++ b/src/test/java/com/docus/server/report/webservice/impl/SdryReportServerImplTest.java @@ -1073,4 +1073,11 @@ public class SdryReportServerImplTest { System.out.println(reportServer.getReportDtoByInspectionInsert(insertUtil)); } + + + + + + + }