簡體   English   中英

使用屬性解析XML

[英]Parsing XML with attributes

我想用屬性和值解析此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>

我想解析像fieldname作為鍵和值作為dav(values)。

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++)
                {
                    listVendorField.add(tsfpmlVendorElement.getElementsByTagName("vendorDefinedValue").item(j).getTextContent());
                    System.out.println("kkk:  "+ tsfpmlVendorElement.getElementsByTagName("vendorDefinedValue").item(j).getAttributes().getLength());
                    System.out.println("kkk:  "+ tsfpmlVendorElement.getElementsByTagName("vendorDefinedValue").item(j).getNodeType());
                } 

             }
        }

您的問題不是很清楚。 有關W3C DOM的Javadoc,請參閱http://www.w3.org/2003/01/dom2-javadoc/org/w3c/dom/Element.html ,該文檔將提供屬性及其值。

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

這是對您的代碼進行的修改,因此它可以打印出諸如“ filedName”之類的屬性,以及諸如“ Bookuser”之類的屬性值:

    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());
            }

        }
    }

暫無
暫無

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

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