Java DOM解析器为何获胜';是否显示XML文件中的所有数据?

Java DOM解析器为何获胜';是否显示XML文件中的所有数据?,java,xml,parsing,dom,domparser,Java,Xml,Parsing,Dom,Domparser,我正在学习如何用Java编写解析器,现在我正在尝试制作一个DOM XML解析器,但我的解析器并不显示XML文件中的所有数据。有什么问题吗?有人能帮我吗 下面是DOM解析器的类: public class DOMParser2 { private static Shoes getShoes(Node node) { Shoes shoes = new Shoes(); if(node.getNodeType() == Node.ELEMENT_NOD

我正在学习如何用Java编写解析器,现在我正在尝试制作一个DOM XML解析器,但我的解析器并不显示XML文件中的所有数据。有什么问题吗?有人能帮我吗

下面是DOM解析器的类:

    public class DOMParser2 {
    private static Shoes getShoes(Node node) {
        Shoes shoes = new Shoes();
        if(node.getNodeType() == Node.ELEMENT_NODE){
            Element element = (Element) node;
            shoes.setTitle(getTagValue("ss:title", element));
            shoes.setBrand(Brand.fromValue(getTagValue("ss:brand", element)));
            shoes.setCategory(Category.fromValue(getTagValue("ss:category", element)));
            shoes.setSeason(Season.fromValue(getTagValue("ss:season", element)));
            shoes.setPrice(Double.parseDouble(getTagValue("ss:price", element)));
        }
        return shoes;
    }
    private static String getTagValue(String tag, Element element){
        NodeList nodeList = element.getElementsByTagName(tag).item(0).getChildNodes();
        Node node = (Node) nodeList.item(0);
        return node.getNodeValue();
    }
    
    public static void main(String[] args){
        String filepath = "ShoesShop.xml";
        File xmlFile = new File(filepath);
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder;
        
        try {
            builder = factory.newDocumentBuilder();
            Document document = builder.parse(xmlFile);
            document.getDocumentElement().normalize();
            System.out.print("Root element: " + document.getDocumentElement().getNodeName());
            
            NodeList nodeList = document.getElementsByTagName("ss:ShoesShop");
            
            List<Shoes> shoesList = new ArrayList<Shoes>();
            for(int i = 0; i<nodeList.getLength(); i++){
                shoesList.add(getShoes(nodeList.item(i)));
            }
            
            for (Shoes shoes:shoesList){
                System.out.println();
                System.out.println(shoes.toString());
            } 
        } catch(Exception exc){
            exc.printStackTrace();
        }
    }
}
公共类DOMParser2{
私有静态鞋getShoes(节点){
鞋=新鞋();
if(node.getNodeType()==node.ELEMENT\u node){
元素=(元素)节点;
setTitle(getTagValue(“ss:title”,元素));
shoes.setBrand(Brand.fromValue(getTagValue(“ss:Brand”,element)));
setCategory(Category.fromValue(getTagValue(“ss:Category”,element)));
鞋子。设置季节(季节。fromValue(getTagValue(“ss:Season”,元素));
setPrice(Double.parseDouble(getTagValue(“ss:price”,element));
}
退鞋;
}
私有静态字符串getTagValue(字符串标记,元素){
NodeList NodeList=element.getElementsByTagName(标记).item(0.getChildNodes();
Node=(Node)nodeList.item(0);
返回node.getNodeValue();
}
公共静态void main(字符串[]args){
字符串filepath=“shoessshop.xml”;
文件xmlFile=新文件(文件路径);
DocumentBuilderFactory工厂=DocumentBuilderFactory.newInstance();
文档生成器;
试一试{
builder=factory.newDocumentBuilder();
Document=builder.parse(xmlFile);
document.getDocumentElement().normalize();
System.out.print(“根元素:+document.getDocumentElement().getNodeName());
NodeList NodeList=document.getElementsByTagName(“ss:ShoesShop”);
List shoesList=new ArrayList();

for(int i=0;i您的第一个println显示了答案。您的根元素未命名为
ShoesShop
,并且它没有任何名为
shoes
。VGR,谢谢,它很有帮助。但我无法显示完整列表。我如何更改它?
文档。getElementsByTagName(“shoes”);
返回一个空列表。也许您应该尝试实际的标记名,
“ss:shoes”
?我尝试了“ss:shoes”但没有帮助。当我尝试“ss:ShoesShop”时,它只返回XML文件中的第一个注释(实际上,它有5个注释)。当我在那里更改项值时,例如:NodeList NodeList=element.getElementsByTagName(标记)。项(1).getChildNodes();它显示第二个注释,当项目(2)时,它显示第三个注释等。我需要显示所有注释。编辑您的问题并显示您正在运行的实际代码。
    <ss:ShoesShop xmlns:ss="http://www.example.org/ShoesShop" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.example.org/ShoesShop ShoesShop.xsd ">
      <ss:shoes id="1" stock="true">
        <ss:title>Baltrum</ss:title>
        <ss:brand>Gucci</ss:brand>
        <ss:category>Boots</ss:category>
        <ss:season>fall</ss:season>
        <ss:price>734.0</ss:price>
      </ss:shoes>
  <ss:shoes id="2" stock="true" mostWanted = "true">
    <ss:title>Amalfi</ss:title>
    <ss:brand>Dior</ss:brand>
    <ss:category>Mules</ss:category>
    <ss:season>winter</ss:season>
    <ss:price>364.0</ss:price>
  </ss:shoes>
</ss:ShoesShop>