1

私のxmlファイルは次のようになります

 <InNetworkCostSharing>
                <FamilyAnnualDeductibleAmount>
                    <Amount>6000</Amount>
                </FamilyAnnualDeductibleAmount>
                <IndividualAnnualDeductibleAmount>
                    <NotApplicable>Not Applicable</NotApplicable>
                </IndividualAnnualDeductibleAmount>
                <PCPCopayAmount>
                    <CoveredAmount>0</CoveredAmount>
                </PCPCopayAmount>
                <CoinsuranceRate>
                    <CoveredPercent>0</CoveredPercent>
                </CoinsuranceRate>
                <FamilyAnnualOOPLimitAmount>
                    <Amount>6000</Amount>
                </FamilyAnnualOOPLimitAmount>
                <IndividualAnnualOOPLimitAmount>
                    <NotApplicable>Not Applicable</NotApplicable>
                </IndividualAnnualOOPLimitAmount>
 </InNetworkCostSharing>

<FamilyAnnualDeductibleAmount>から、また から金額の値を取得しようとしています<FamilyAnnualOOPLimitAmount>。Javaでこれらの値を取得するにはどうすればよいですか?

4

4 に答える 4

4

2 つの XPath クエリ/InNetworkCostSharing/FamilyAnnualDeductibleAmountを使用することもInNetworkCostSharing/FamilyAnnualOOPLimitAmount、ノードInNetworkCostSharingを取得してその 2 つの直接の子の値を取得することもできます。

XPath を使用したソリューション:

// load the XML as String into a DOM Document object
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
ByteArrayInputStream bis = new ByteArrayInputStream("YOUR XML".getBytes());
Document doc = docBuilder.parse(bis);

// XPath to retrieve the content of the <FamilyAnnualDeductibleAmount> tag
XPath xpath = XPathFactory.newInstance().newXPath();
XPathExpression expr = xpath.compile("/InNetworkCostSharing/FamilyAnnualDeductibleAmount/text()");
String familyAnnualDeductibleAmount = (String)expr.evaluate(doc, XPathConstants.STRING);
于 2012-11-27T19:15:06.823 に答える
1

このようなことを試してください(getElementsByTagNameを使用して親ノードを取得し、子ノードに到達する値を取得します):

   File xmlFile = new File("NetworkCost.xml");
   DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
   DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
   Document doc = dBuilder.parse(xmlFile );
   doc.getDocumentElement().normalize();

   NodeList nList = doc.getElementsByTagName("FamilyAnnualDeductibleAmount");
   String familyDedAmount = nList.item(0).getChildNodes().item(0).getTextContent();

   nList = doc.getElementsByTagName("FamilyAnnualOOPLimitAmount");
   String familyAnnualAmount = 
                            nList.item(0).getChildNodes().item(0).getTextContent();
于 2012-11-27T19:16:48.257 に答える
1

StAX ベースのソリューション:

    XMLInputFactory f = XMLInputFactory.newInstance();
    XMLStreamReader rdr = f.createXMLStreamReader(new FileReader("test.xml"));
    while (rdr.hasNext()) {
        if (rdr.next() == XMLStreamConstants.START_ELEMENT) {
            if (rdr.getLocalName().equals("FamilyAnnualDeductibleAmount")) {
                rdr.nextTag();
                int familyAnnualDeductibleAmount = Integer.parseInt(rdr.getElementText());
                System.out.println("familyAnnualDeductibleAmount = " + familyAnnualDeductibleAmount);
            } else if (rdr.getLocalName().equals("FamilyAnnualOOPLimitAmount")) {
                rdr.nextTag();
                int familyAnnualOOPLimitAmount = Integer.parseInt(rdr.getElementText());
                System.out.println("FamilyAnnualOOPLimitAmount = " + familyAnnualOOPLimitAmount);
            }
        }
    }
    rdr.close();

StAXはあなたのような場合に特に適していることに注意してください。不要な要素をすべてスキップして、必要なものだけを読み取ります

于 2012-11-27T19:23:22.613 に答える
0

stackoverflowのこの質問で解決策を見つけたと思います

Java DOM で XML ノードのテキスト値を取得する

于 2012-12-19T17:27:31.300 に答える