2017-11-12 9 views
0

私は、可変フィールドとノードでXML文書を解析するのに苦労しています。 子ノードのすべてのデータを1つのまとまりで取得するか、まったく取得しません。Java XMLノードを確認する

は、私は、これが混乱して知っているが、私と一緒にクマ私は等のタグ間の属性やテキストを運ぶラインで唯一興味がありますが、両親/祖父母を特定したい。このXMLドキュメント

<?xml version="1.0" encoding="UTF-8"?> 
<GreatGrandParent id="123456" version="5"> 
    <GrandParent1> 
     <Parent1> 
      <Child1>Text1</Child1>     
      <Child2>Text2</Child2> 
      <Child3>Text3</Child3> 
     </Parent1> 
     <Parent2> 
      <Child1 name="something" from="0" to="999" /> 
      <Child2 name="something" from="0" to="999" /> 
     </Parent2> 
    </GrandParent1> 
<GrandParent2> 
    <Parent1 id="something else" minv="0" maxv="999" name="name1"/> 
</GrandParent2> 
</GreatGrandParent> 

を想像してみて。上記の例を使用して、私はJavaは、以下の出力を生成します:

GreatGrandParent.id="123456" 
GreatGrandParent.version="5" 
GreatGrandParent.GrandParent1.Parent1.Child1 = "Text1" 
GreatGrandParent.GrandParent1.Parent1.Child2 = "Text2" 
GreatGrandParent.GrandParent1.Parent1.Child3 = "Text3" 
GreatGrandParent.GrandParent1.Parent2.Child1.Name="Something" 
GreatGrandParent.GrandParent1.Parent2.Child1.from="0" 
GreatGrandParent.GrandParent1.Parent2.Child1.to="999" 
etc.... 

ノード名は変えることができ、必ずしもこのパターンに従っていませんが、私はそれは私が後だが何であるかを説明しようとしています。

ファイルをテキストとして読み取り、各行を1つずつスキャンすることでこれを行うことができますが、フィールドは非常に可変であり得るため、またはフィールドの関係が前と後のものとの関係であり、デバッグが困難な複雑なコードにつながります。

解決策を探しているわけではありません。正しい方向のポインタだけです。インターネット上の多くの例は、静的な構造に基づいており、どのフィールドが利用可能であるかを知っています。これは私には役に立たないものです。

私はhttps://www.mkyong.com/java/how-to-read-xml-file-in-java-dom-parser/にMKYungの考えの線に沿って何かを探しています - 特に方法の一部を行くないノードセクションをループ、しかし、コードは親リスト例えば、余分に多くのコードをダンプ1ブロック内の子供のすべての値。これは私が望むものではありません。

誰にでもこの提案がありますか?

+0

なぜ「node.js」タグが付けられていますか? –

+0

申し訳ありませんnode.jsタグを削除しました –

答えて

0

SAX-Parserを使用できます。 org.xml.sax.helpers.DefaultHandlerでは、startElement()およびendElement()を実装する必要があります。実際の要素へのxpath上のトラックを保持するには両方のメソッドが必要で、startElement()では属性をチェックしてそれらを出力することができます。

+0

ああ、私はSAX-Parserを見ましたが、おそらく十分に見苦しくなかったでしょう。 –

+0

ラルフさんがお返事ありがとうございました。いくつかの実験の後、あなたが提案したStartElement()とendElement()メソッドを使って、私が望むものを得ることができました。 –

関連する問題