Java 使用NodeList和DocumentBuilder解析Xml

Java 使用NodeList和DocumentBuilder解析Xml,java,xml,dom,Java,Xml,Dom,使用dom和DocumentBuilder解析xml有点困难。我可以让它工作,但我想我对所有的子节点都有点困惑,等等 下面是我正在使用的XML: <?xml version="1.0" encoding="utf-8"?> <LabTests> <LabTest type="specialty" name="Anti-FXa activity" id="antiFXa" order="16"> <values unit="U/mL

使用dom和DocumentBuilder解析xml有点困难。我可以让它工作,但我想我对所有的子节点都有点困惑,等等

下面是我正在使用的XML:

<?xml version="1.0" encoding="utf-8"?>
<LabTests>
    <LabTest type="specialty" name="Anti-FXa activity" id="antiFXa" order="16">
        <values unit="U/mL" default="N/A">
            <value type="increased" val="0">
                <conditions>
                    <condition>Heparin effect</condition>
                </conditions>
            </value>
            <value type="normal" val="">
                <conditions></conditions>
            </value>
            <value type="decreased" val="">
                <conditions></conditions>
            </value>
        </values>
    </LabTest>
    <LabTest type="general" name="aPTT" id="aPTT" order="">
        <values unit="secs" default="N/A">
            <value type="increased" val="">
                <conditions>
                    <condition>Acquired hemophilia</condition>
                    <condition>Acquired vWD</condition>
                    <condition>DIC</condition>
                    <condition>Dysfibrinogenemia</condition>
                    <condition>FI deficiency</condition>
                    <condition>FII deficiency</condition>
                    <condition>FII/IIa inhibitors</condition>
                    <condition>FIX deficiency</condition>
                    <condition>FIX inhibitors</condition>
                    <condition>FV deficiency</condition>
                    <condition>FV inhibitors</condition>
                    <condition>FVIII deficiency</condition>
                    <condition>FX deficiency</condition>
                    <condition>FX inhibitors</condition>
                    <condition>FXI deficiency</condition>
                    <condition>FXI inhibitors</condition>
                    <condition>FXII deficiency</condition>
                    <condition>FXII inhibitors</condition>
                    <condition>Heparin effect</condition>
                    <condition>Liver disease effect</condition>
                    <condition>Lupus anticoagulant</condition>
                    <condition>Monoclonal gammopathy</condition>
                    <condition>Vitamin K deficiency</condition>
                    <condition>vWD type 1</condition>
                    <condition>vWD type 2</condition>
                    <condition>vWD type 3</condition>
                    <condition>Warfarin effect</condition>
                </conditions>
            </value>
            <value type="normal" val="">
                <conditions>
                    <condition>DIC</condition>
                    <condition>Dysfibrinogenemia</condition>
                    <condition>FVII deficiency</condition>
                    <condition>FXIII deficiency</condition>
                    <condition>FVII inhibitors</condition>
                    <condition>Liver disease effect</condition>
                    <condition>Lupus anticoagulant</condition>
                    <condition>Monoclonal gammopathy</condition>
                    <condition>Vitamin K deficiency</condition>
                    <condition>vWD type 1</condition>
                    <condition>vWD type 2</condition>
                    <condition>vWD type 3</condition>
                    <condition>Warfarin effect</condition>
                </conditions>
            </value>
            <value type="decreased" val="">
                <conditions>
                    <condition>DIC</condition>
                </conditions>
            </value>
        </values>
    </LabTest>
</LabTests>

肝素效应
获得性血友病
收购大众汽车
DIC
纤维蛋白原异常血症
FI缺陷
FII缺陷
FII/IIa抑制剂
弥补不足
固定抑制剂
FV缺乏
FV抑制剂
FVIII缺陷
外汇短缺
外汇抑制剂
FXI缺乏
FXI抑制剂
FXII缺乏
FXII抑制剂
肝素效应
肝病效应
狼疮抗凝剂
单克隆丙种球蛋白病
维生素K缺乏
vWD 1型
vWD类型2
vWD类型3
华法林效应
DIC
纤维蛋白原异常血症
FVII缺陷
FXIII缺陷
FVII抑制剂
肝病效应
狼疮抗凝剂
单克隆丙种球蛋白病
维生素K缺乏
vWD 1型
vWD类型2
vWD类型3
华法林效应
DIC
我试图做的是抓住每个
LabTest
元素,在每个元素中抓住
value
元素(抓住
type
的值),在
value
元素中抓住所有
条件
元素


最后,我想要一个像
Map这样的东西,它应该像您描述的那样工作:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();

Document doc = builder.parse("input.xml");

NodeList labTestList = doc.getElementsByTagName("LabTest");
for (int i = 0; i < labTestList.getLength(); ++i)
{
    Element labTest = (Element) labTestList.item(i);
    String labTestType = labTest.getAttribute("type");

    NodeList valueList = labTest.getElementsByTagName("value");
    for (int j = 0; j < valueList.getLength(); ++j)
    {
        Element value = (Element) valueList.item(j);
        String valueType = value.getAttribute("type");

        NodeList conditionList = value.getElementsByTagName("condition");
        for (int k = 0; k < conditionList.getLength(); ++k)
        {
            Element condition = (Element) conditionList.item(k);
            String conditionText = condition.getFirstChild().getNodeValue();
        }
    }
}
DocumentBuilderFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder=factory.newDocumentBuilder();
documentdoc=builder.parse(“input.xml”);
NodeList labTestList=doc.getElementsByTagName(“LabTest”);
对于(int i=0;i
非常感谢您。这太棒了!!