0

私は次のようなxmlを持っています

<Personnel>
  <Employee type="permanent">
        <Name>Seagull</Name>
        <Id>3674</Id>
        <Age>34</Age>
   </Employee>
  <Employee type="contract">
        <Name>Robin</Name>
        <Id>3675</Id>
        <Age>25</Age>
    </Employee>
  <Employee type="permanent">
        <Name>Crow</Name>
        <Id>3676</Id>
        <Age>28</Age>
    </Employee>
</Personnel>

各ノードの名前を取得し、そこから値を取得しようとしていますが、次の操作を行うと、常にnullまたは空の文字列が表示されます。

child.getLocalName()。equals( "permanent")

child.getLocalName()がnullであるため、例外がスローされます。デバッガーで子をチェックしたところ、localName="permanent"であることがわかりました。

この奇妙な振る舞いに精通している人はいますか?

4

1 に答える 1

0

以下を使ってみてください...

DOM Parser

SAX Parser

Pull Parser

JAXP AND JAXB

Castor

DOMパーサーの使用方法に関するコードスニペットを次に示します。

DocumentBuilderFactory odbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder odb =  odbf.newDocumentBuilder();
            InputSource is = new InputSource(new StringReader(xml));
            Document odoc = odb.parse(is);
            odoc.getDocumentElement().normalize ();    // normalize text representation
            System.out.println ("Root element of the doc is " + odoc.getDocumentElement().getNodeName());
            NodeList LOP = odoc.getElementsByTagName("locations");
            int totalPersons =LOP.getLength();
            System.out.println("Total nos of locations:"+totalPersons);

            for(int s=0; s<LOP.getLength() ; s++)
            {
                Node FPN =LOP.item(s);
                if(FPN.getNodeType() == Node.ELEMENT_NODE)
                    {

                    Element latlon = (Element)FPN;                                                                // Change 1

                    NodeList oNameList1 = latlon.getElementsByTagName("featured");                                       // Change 2
                    Element firstNameElement = (Element)oNameList1.item(0);
                    NodeList textNList1 = firstNameElement.getChildNodes();
                    //this.setLocationId(((Node)textNList1.item(0)).getNodeValue().trim());    // Change 3
                    featuredArr = changeToBoolean(((Node)textNList1.item(0)).getNodeValue().trim());                                    // value taken
                    System.out.println("#####The Parsed data#####");
                    System.out.println("featured : " + ((Node)textNList1.item(0)).getNodeValue().trim());            // Change 4
                    System.out.println("#####The Parsed data#####");
于 2012-09-13T17:19:29.480 に答える