解析存储在字符串中的xml

时间:2013-02-11 15:41:01

标签: java xml utf-8

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

<?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>

1 个答案:

答案 0 :(得分:2)

对于DOM,一个选项是使用InputSource

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

您可以对SAX使用类似的策略,因为它也支持InputSource