2013-02-11 39 views
0

我有一个以xml格式编码的字符串。所以当我将它打印到控制台时,它会看起来像一个XML文件。我想要做的是现在使用带DOM或SAX库的java读取此字符串中的值。但我不知道该怎么做,因为我的字符串没有存储在文件中。解析存储在字符串中的xml

<?xml version="1.0" encoding="UTF-8"?> 
<ADT_A01 xmlns="urn:hl7-org:v2xml"> 
    <MSH> 
     <MSH.1>|</MSH.1> 
     <MSH.2>^~\&amp;</MSH.2> 
     <MSH.3> 
      <HD.1>HIS</HD.1> 
     </MSH.3> 
     <MSH.4> 
      <HD.1>RIH</HD.1> 
     </MSH.4> 
     <MSH.5> 
      <HD.1>EKG</HD.1> 
     </MSH.5> 
     <MSH.6> 
      <HD.1>EKG</HD.1> 
     </MSH.6> 
     <MSH.7>199904140038</MSH.7> 
     <MSH.9> 
      <MSG.1>ADT</MSG.1> 
      <MSG.2>A01</MSG.2> 
     </MSH.9> 
     <MSH.11> 
      <PT.1>P</PT.1> 
     </MSH.11> 
     <MSH.12> 
      <VID.1>2.6</VID.1> 
     </MSH.12> 
    </MSH> 
    <PID> 
     <PID.1>1</PID.1> 
     <PID.3> 
      <CX.1>1478895</CX.1> 
      <CX.2>4</CX.2> 
      <CX.3>M10</CX.3> 
      <CX.4> 
       <HD.1>PA</HD.1> 
      </CX.4> 
     </PID.3> 
     <PID.5> 
      <XPN.1> 
       <FN.1>XTEST</FN.1> 
      </XPN.1> 
      <XPN.2>PATIENT</XPN.2> 
     </PID.5> 
     <PID.7>19591123</PID.7> 
     <PID.8> F</PID.8> 
    </PID> 
</ADT_A01> 
+0

http://stackoverflow.com/questions/1219596/how-to-i-output-org-w3c-dom-element-to-string-format-in-java,也用于prettyprint /格式作为关键字找到更多的结果 – 2013-02-11 15:43:23

+0

你可以发布你的xml,你想从中获得什么样的价值?如果你可以对输入进行采样并且预期的结果是好的 – justMe 2013-02-11 15:48:22

+0

我将如何去获取根节点,以及只是名为ADT_A01的文本(并不总是相同)。当我尝试获取它时,我总是得到它[#text:] – zms6445 2013-02-11 15:59:37

回答

2

对于DOM,一种选择是使用InputSource

String str = "<xml>...</xml>"; 
DocumentBuilder builder = DocumentBuilderFactory.newDocumentBuilder(); 
Document document = builder.parse(new InputSource(new StringReader(str))); 

您可以使用类似的策略与SAX,因为它支持InputSource为好。

+0

谢谢。我有这个根节点有什么方法可以获取文本ADT_A01(它并不总是被称为ADT_A01) – zms6445 2013-02-11 15:56:01

+1

如果您使用DOM,您可以使用'Document'对象上的'getDocumentElement()'获取根元素,然后在返回的'Element'对象上可以调用'getTagName()'或'getLocalName()'如果你想要一个非名称空间的名字。 – 2013-02-11 16:09:31