0

解析したいXMLファイルがあります(下記)。mykong の例を使用して学習しました - http://www.mkyong.com/java/how-to-read-xml-file-in-Java-dom-parser/comment-page-2/#comment-125087 しかし「[致命的なエラー] flight.xml:3:15: エレメント タイプ "id" に関連付けられた属性 "{1}" にはオープン クォーテーションが必要です」というエラーが表示されました。

<?xml version="1.0" encoding="utf-8"?>
<root xmlns:android="www.google.com">
<passenger id=001>
<name>Tom Cruise</name>
</passenger>
<passenger id=002>
<name>Tom Hanks</name>
</passenger>
</root>

印刷ステートメントを変更しましたが、機能しません。

System.out.println("Passenger id : " + getTagValue("passenger id", eElement));
System.out.println("Name : " + getTagValue("name", eElement));

mykong のコードを編集して、自分で動作させるにはどうすればよいですか?

更新 - 以下のように変更を加えました。しかし、出力に乗客の ID と名前が表示されなくなりました。どうすれば修正できますか?

ここに新しい XML ファイル -

<?xml version="1.0" encoding="utf-8"?>
<root xmlns:android="www.google.com">

<passenger id="001">
<name>Tom Cruise</name>
</passenger>

<passenger id="002">
<name>Tom Hanks</name>
</passenger>

</root>
4

3 に答える 3

2

id=001 を受け入れる XML パーサーはありません。id="001" または id='001' のいずれかである必要があります。これらは、いわゆる整形式のxml ドキュメントの最小要件です。それ以外の場合は、xml ドキュメントではありません。

•XML documents must have a root element
•XML elements must have a closing tag
•XML tags are case sensitive
•XML elements must be properly nested
•XML attribute values must be quoted

さらに、この変更をコードに加えます

public static void main(String argv[]) throws Exception {
    File fXmlFile = new File("c://file.xml");
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    Document doc = dBuilder.parse(fXmlFile);
    doc.getDocumentElement().normalize();
    System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
    NodeList nList = doc.getElementsByTagName("passenger");
    System.out.println("-----------------------");
    for (int temp = 0; temp < nList.getLength(); temp++) {
        Node nNode = nList.item(temp);
        if (nNode.getNodeType() == Node.ELEMENT_NODE) {
            System.out.println("Passenger id : " + e.getAttribute("id"));
            System.out.println("Name : " + e.getElementsByTagName("name").item(0).getTextContent());
        }
    }
}

出力

Root element :root
-----------------------
Passenger id : 001
Name : Tom Cruise
Passenger id : 002
Name : Tom Hanks
于 2012-12-09T13:30:58.720 に答える
1

id 属性は二重引用符で開始および終了する必要があります。

<passenger id="001">

また、パッセンジャータグを閉じることを忘れないでください(あなたの例ではそれを見ないでください)。

于 2012-12-09T13:42:27.390 に答える
0

ネームタグを 1 回しか開いていないのに、2 回閉じています。こんなことを書きたくなるはずです。

<?xml version="1.0" encoding="utf-8"?>
<root xmlns:android="www.google.com">
<passenger id=001>
<name>Tom Cruise</name>
<passenger id=002>
<name>Tom Hanks</name>
</root>
于 2012-12-09T13:28:36.263 に答える