簡體   English   中英

解析嵌套標簽XML Java時遇到困難

[英]Having difficulty parsing nested tags xml java

我正在從字典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元素作為一個完整的字符串。 這是我當前的代碼。

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元素內有多個嵌套標簽

混合https://stackoverflow.com/a/5948326/145757在Java DOM中獲取節點的內部XML作為String,我們得到:

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...

希望這可以幫助...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM