簡體   English   中英

如何在使用JDOM2解析XML時忽略注釋內容

[英]how to Ignore Commented content while parsing XML using JDOM2

我在使用JDOM解析器解析我的xml時遇到了一些問題。當我嘗試檢索內容時,它給了我注釋的行。是否有一種方法可以忽略這些注釋行。

Java代碼:

SAXBuilder jdomBuilder = new SAXBuilder();
    // jdomDocument is the JDOM2 Object
    Document jdomDocument = jdomBuilder.build("C:/manu/WebservicesWS/DynamicXmlParse/src/PO_XML.xml");
    // The root element is the root of the document. we print its name
    System.out.println(jdomDocument.getRootElement().getName()); // prints
                                                                    // "rss"
    Element rss = jdomDocument.getRootElement();
    System.out.println(rss.getNamespaceURI());
    List<Element> rssChildren = rss.getChildren();
    // getElement(rssChildren);
    for (int i = 0; i < rssChildren.size(); i++) {
        Element rssChild = rssChildren.get(i);
        System.out.println(rssChild.getName());// prints 'title' and 'link'
        List<Content> rssContents = rssChild.getContent();
        for (int j = 0; j < rssContents.size(); j++) {
            Content content = rssContents.get(j);
            System.out.println(content.getValue());
        }
    }

XML結構

<interchange-control-header>
    <control-number>2</control-number>
    <sender-id>ZZ:IQAAOBUYER7</sender-id>
    <receiver-id>ZZ:33347456972</receiver-id>
    <!--sender-id>ZZ:IQAAOBUYER2</sender-id>
    <receiver-id>ZZ:IQAAOSUPPLIER2</receiver-id>        
    <sender-id>IQAOrionBuyer</sender-id>
    <receiver-id>IQAOrionSupplier</receiver-id-->           
    <date-time>2012-06-29T09:30:47-05:00</date-time>
    <control-version>1</control-version>
    <usage-indicator>T</usage-indicator>
    <is-copy>0</is-copy>
</interchange-control-header>

電流輸出

interchange-control-header
2
ZZ:IQAAOBUYER7
ZZ:33347456972
sender-id>ZZ:IQAAOBUYER2</sender-id>
    <receiver-id>ZZ:IQAAOSUPPLIER2</receiver-id>        
    <sender-id>IQAOrionBuyer</sender-id>
    <receiver-id>IQAOrionSupplier</receiver-id
2012-06-29T09:30:47-05:00
1
T
0

要求輸出:

interchange-control-header
2
ZZ:IQAAOBUYER7
ZZ:33347456972
2012-06-29T09:30:47-05:00
1
T
0

注釋被認為是XML文檔的可識別部分,以及更明顯的元素,如Elements。 其他要注意的內容是處理指令,文本和實體引用。

當您在rssChild元素上調用getContent時,您將獲得Comment內容,並且它的值是該內容中的文本。

您似乎只想打印出每個子元素的文本內容,而不是所有內容。

獲取所有子元素的簡單方法是使用getChildren()方法 (而不是getContent)。 你已經在其他地方使用了getChildren,所以我不確定你為什么忘了在這里使用它....

此外,您可以簡化循環以適應每種風格...此代碼:

 List<Element> rssChildren = rss.getChildren(); // getElement(rssChildren); for (int i = 0; i < rssChildren.size(); i++) { Element rssChild = rssChildren.get(i); System.out.println(rssChild.getName());// prints 'title' and 'link' List<Content> rssContents = rssChild.getContent(); for (int j = 0; j < rssContents.size(); j++) { Content content = rssContents.get(j); System.out.println(content.getValue()); } } 

可能:

for (Element rssChild : rss.getChildren()) {
    System.out.println(rssChild.getName());// prints 'title' and 'link'
    for (Element subRss : rssChild.getChildren()) {
        System.out.println(subRss.getValue());
    }
}

暫無
暫無

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

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