1

辞書 API から定義を解析しています。この行のxmlがあります

<dt>:any of a small genus (<it>Apteryx</it>) of flightless New Zealand birds with rudimentary wings, stout legs, a long bill, and grayish brown hairlike plumage</dt>

dt 要素の完全な行を取得するにはどうすればよいですか。私の問題は、要素に追加のタグがあるため、この部分(Apteryx)まで来ると機能しないことです。dt 要素全体を 1 つの文字列全体として取得するにはどうすればよいですか。これが私の現在のコードです。

Element def = (Element) element.getElementsByTagName("def").item(0);
System.out.println(getValue("dt",def).replaceAll("[^\\p{L}\\p{N} ]", ""));

def は dt 要素を保持する要素です。

そして、ここに私のgetValueコードがあります

private static String getValue(String tag, Element element)
{
    NodeList nodes = element.getElementsByTagName(tag).item(0).getChildNodes();
    Node node = (Node) nodes.item(0);
    return node.getNodeValue();
}

dt 要素内に複数のネストされたタグがある場合があります

4

1 に答える 1

0

https://stackoverflow.com/a/5948326/145757Get a node's inner XML as String in Java DOMを混合すると、次のようになります。

public static String getInnerXml(Node node)
{
    DOMImplementationLS lsImpl = (DOMImplementationLS)node.getOwnerDocument().getImplementation().getFeature("LS", "3.0");
    LSSerializer lsSerializer = lsImpl.createLSSerializer();
    lsSerializer.getDomConfig().setParameter("xml-declaration", false);
    NodeList childNodes = node.getChildNodes();
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < childNodes.getLength(); i++)
    {
       sb.append(lsSerializer.writeToString(childNodes.item(i)));
    }
    return sb.toString(); 
}

私のコメントを追加すると、次のようになります。

getInnerXml(document.getElementsByTagName("dt").item(0));

結果:

:any of a small genus (<it>Apteryx</it>) of flightless New Zealand birds...

お役に立てれば...

于 2013-06-11T15:55:00.103 に答える