【问题标题】:xml parsing with repeated names of nodes具有重复节点名称的 xml 解析
【发布时间】:2014-01-13 09:00:20
【问题描述】:

请告诉我在 java 中解析以下 xml 的最佳方法。这里我的root(element)和其他节点的名字是一样的,是不是可以用jaxb还是要坚持正常的dom?

<element exp="office_adr" display="false" id="o_a2">
    <element exp="office1" display="false" id="o2">
            <element exp="city1" display="false" id="c1">
                <element exp="address1" display="true" id="h_1">
                    <element exp="ad1" display="false" id="h_2"/>
                    <element exp="ad2" display="false" id="h_3"/>
                    <element exp="ad3" display="false" id="h_4"/>
                    <element exp="ad4" display="false" id="h_5"/>
                    <element exp="ad5" display="false" id="h_6"/>
                </element>
                <element exp="address2" display="true" id="h_8">
                    <element exp="ad7" display="false" id="h_9"/>
                    <element exp="ad8" display="false" id="h_10"/>
                </element>
                <element exp="address3" display="true" id="h_11">
                    <element exp="ad9" display="false" id="h_12"/>
                </element>
            </element>
    </element>
    <element exp="office2" display="false" id="o2">
            <element exp="city2" display="false" id="c2">
                <element exp="address3" display="true" id="a_1">
                    <element exp="ad1" display="false" id="a_2"/>
                    <element exp="ad2" display="false" id="a_3"/>
                    <element exp="ad3" display="false" id="a_4"/>
                    <element exp="ad4" display="false" id="a_5"/>
                    <element exp="ad5" display="false" id="a_6"/>
                </element>
                <element exp="address2" display="true" id="a_8">
                    <element exp="ad7" display="false" id="a_9"/>
                    <element exp="ad8" display="false" id="a_10"/>
                </element>
                <element exp="address3" display="true" id="a_11">
                    <element exp="ad9" display="false" id="a_12"/>
                </element>
            </element>
    </element>
</element>

【问题讨论】:

    标签: java xml jaxb


    【解决方案1】:

    JAXB 没问题:

    package test;
    
    import java.io.File;
    import java.util.Collection;
    
    import javax.xml.bind.JAXB;
    import javax.xml.bind.annotation.XmlAttribute;
    
    public class Element
    {
        private String exp;
        private boolean display;
        private String id;
        private Collection<Element> element;
    
        @XmlAttribute
        public String getExp()
        {
            return exp;
        }
        public void setExp(String exp)
        {
            this.exp = exp;
        }
    
        @XmlAttribute
        public boolean isDisplay()
        {
            return display;
        }
        public void setDisplay(boolean display)
        {
            this.display = display;
        }
    
        @XmlAttribute
        public String getId()
        {
            return id;
        }
        public void setId(String id)
        {
            this.id = id;
        }
    
        public Collection<Element> getElement()
        {
            return element;
        }
        public void setElement(Collection<Element> element)
        {
            this.element = element;
        }
    
        public static void main(String[] args)
        {
            Element e = JAXB.unmarshal(new File("C:/testFile.xml"), Element.class);
            System.out.println(e.getElement().size());
        }
    }
    

    【讨论】:

      【解决方案2】:

      SAX、DOM 或任何其他 XML 处理代码都没有问题。这是一种特别丑陋的 XML 编写方式,但它是完全合法的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-02-23
        • 2020-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多