Java 使用属性解析XML

Java 使用属性解析XML,java,xml-parsing,Java,Xml Parsing,我想用属性和值解析这个XML。现在我可以解析值,但不能解析属性 我的XML: <Book> <vendor> <vendorPartyReference href="VENDOR"/> <vendorDefinedValue fieldName="Bookuser">dav</vendorDefinedValue> <vendorDefinedVal

我想用属性和值解析这个XML。现在我可以解析值,但不能解析属性

我的XML:

   <Book>          
    <vendor>  
      <vendorPartyReference href="VENDOR"/>  
      <vendorDefinedValue fieldName="Bookuser">dav</vendorDefinedValue>  
      <vendorDefinedValue fieldName="ComUser">dav</vendorDefinedValue>  
      <vendorDefinedValue fieldName="Rate">1.02505</vendorDefinedValue>  
      <vendorDefinedValue fieldName="Points">0.00000</vendorDefinedValue>  
      <vendorDefinedValue fieldName="Design">DSF</vendorDefinedValue>  
      <vendorDefinedValue fieldName="Role">APPROVER</vendorDefinedValue>  
      <vendorDefinedValue fieldName="cover">DXBook12</vendorDefinedValue>  
      <vendorDefinedValue fieldName="Organization">Mannar</vendorDefinedValue>  
    </vendor>
    </Book>

达夫
达夫
1.02505
0
DSF
批准人
DXBook12
曼纳
我想将类似fieldname的内容解析为key,将value解析为dav(values)

NodeList nList=document.getElementsByTagName(“Book”);

对于(int s=0;s您的问题不是很清楚。请参阅Javadoc for W3C DOM,它将提供属性及其值。我认为您需要

java.lang.String    getAttribute(java.lang.String name)
          // Retrieves an attribute value by name.


这是您修改的代码,因此它打印出类似“filedName”的属性和类似“Bookuser”的属性值:

NodeList nList=document.getElementsByTagName(“Book”);
对于(int s=0;sjava.lang.String    getAttribute(java.lang.String name)
          // Retrieves an attribute value by name.
 Attr   getAttributeNode(java.lang.String name)
          //Retrieves an attribute node by name.
    NodeList nList = document.getElementsByTagName("Book");
    for (int s = 0; s < nList.getLength(); s++) {
        NodeList tsfpmlVendor = document.getElementsByTagName("vendor");
        for (int i = 0; i < tsfpmlVendor.getLength(); i++) {
            Node tsfpmlVendorNode = tsfpmlVendor.item(i);
            Element tsfpmlVendorElement = (Element) tsfpmlVendorNode;
            for (int j = 0; j < tsfpmlVendorElement.getElementsByTagName("vendorDefinedValue").getLength(); j++) {
                Node n = tsfpmlVendorElement.getElementsByTagName("vendorDefinedValue").item(j);
                listVendorField.add(n.getTextContent());
                NamedNodeMap nnm = n.getAttributes();
                for(int k=0; k<nnm.getLength(); k++) {
                    Node nattr = nnm.item(k);
                    System.out.println("Attribute "+nattr.getNodeName() + " => " + nattr.getNodeValue());
                }
                System.out.println("Value "+n.getTextContent());
                System.out.println("kkk:  " + tsfpmlVendorElement.getElementsByTagName("vendorDefinedValue").item(j).getAttributes().getLength());
                System.out.println("kkk:  " + tsfpmlVendorElement.getElementsByTagName("vendorDefinedValue").item(j).getNodeType());
            }

        }
    }