8

次の質問があります。

XML ドキュメントに特定の XML 要素が含まれているかどうかを確認したいと思います。たとえば、ブール値を返す特定の API の Java メソッドを使用して、特定の XML 要素が XML ドキュメントで使用可能かどうかを確認することはできますか?

これは例としての私の XML ドキュメントです。

<Test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <ServiceRequest>      
     <RequestPayload>
        <LocationInformationRequest>
            <InitialInput>
                <GeoRestriction>
                    <Area>
                        <PolylinePoint>
                            <Longitude>11.0</Longitude>
                            <Latitude>12.0</Latitude>
                            <Altitude>13.0</Altitude>
                        </PolylinePoint>                            
                    </Area>
                </GeoRestriction>
            </InitialInput>
        </LocationInformationRequest>
     </RequestPayload>
  </ServiceRequest>
</Test>

XML 要素 Area が存在するかどうかに関係なく、ブール値として情報が必要です。XML ドキュメントは、私自身の Java クラスで文字列の型として使用されます。

手伝ってくれてありがとう !

4

5 に答える 5

6
public boolean isElementExists(String content) {
    DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
    Document inputDoc = documentBuilderFactory.newDocumentBuilder().parse(new StringReader(content));
    NodeList nodeList = inputDoc.getElementsByTagName(tagName);
    return nodeList.getlength() == 0 ? true : false;
}
于 2013-07-04T09:25:44.637 に答える
2

Javax XPath を使用して XPath クエリを実行できます (他の XPath API もあります)。

http://docs.oracle.com/javase/6/docs/api/javax/xml/xpath/package-summary.html

于 2013-07-04T09:23:18.523 に答える
2

これだけあれば、独自の関数を作成できます。

If (xmlobjectstring.contains("<Area>") and xmlobjectstring.contains("</Area>") { }

xmlfile からさまざまなオブジェクトを解析するだけで済みます。

SAX-XML Reader を試すこともできます。

http://blog.mynotiz.de/programmieren/java-sax-parser-tutorial-773/

より複雑になる場合は、xpath を使用する必要があります。

http://www.ibm.com/developerworks/library/x-javaxpathapi/index.html

于 2013-07-04T09:23:25.977 に答える
1

2 つの方法として、特定の文字列 (Longitude など) を検索するために Java Scannerクラスを試すことができます。ドキュメント内にこの単語が存在するということは、その要素が存在することを意味するということです。

または、カスタム ハンドラーを使用して XML ファイル内のすべての要素を処理する SAXParser を定義することもできますが、これはやりたいことに対して複雑すぎる場合があります。

于 2013-07-04T09:26:26.247 に答える