簡體   English   中英

XML解析錯誤“格式正確”

[英]XML Parsing Error “well-formed”

我在數據庫(而非文件)中有XML數據,我需要對其進行解析以提供可能的寫測試以驗證xml中的數據

xml(內容數據):

 <brid:AccountData xmlns:brid="http://billing.a1telekom.at/BridgeIT/BridgeITDefinition">
 <brid:AccountNumber>250000000032</brid:AccountNumber>
 <brid:CustomerNumber>100104653</brid:CustomerNumber>
 <brid:AccountType>NORM</brid:AccountType>
 <brid:BillCycle>M2</brid:BillCycle>
 <brid:LastInvoiceDate>0001-01-01T00:00:00.000</brid:LastInvoiceDate>
 <brid:BillThroughDate>0001-01-01T00:00:00.000</brid:BillThroughDate>
 <brid:StartDate>2016-02-26T15:27:13</brid:StartDate>
 <brid:EndDate>9999-12-31T23:59:59.000</brid:EndDate>
 <brid:AccountStatus>Active</brid:AccountStatus>
 <brid:TaxCode>U2</brid:TaxCode>
 <brid:CostCentre></brid:CostCentre>
</brid:AccountData>
<brid:PaymentData xmlns:brid="http://billing.a1telekom.at/BridgeIT/BridgeITDefinition">
 <brid:PaymentMethod>Manual</brid:PaymentMethod>
</brid:PaymentData>
<brid:MediaData xmlns:brid="http://billing.a1telekom.at/BridgeIT/BridgeITDefinition">
 <brid:AccountNumber>250000000032</brid:AccountNumber>
 <brid:MediaType>PAPIER</brid:MediaType>
 <brid:StartDate>2016-02-26T15:27:13</brid:StartDate>
 <brid:EndDate>9999-12-31T23:59:59.000</brid:EndDate>
 <brid:InvoiceName>ApuiafgjkLrjgdna Fouydf</brid:InvoiceName>
 <brid:Language>DE</brid:Language>
 <brid:LocationID>118298</brid:LocationID>
 <brid:FirstName>Fouydf</brid:FirstName>
 <brid:LastName>ApuiafgjkLrjgdna</brid:LastName>
 <brid:TitleCode></brid:TitleCode>
 <brid:TitleText></brid:TitleText>
 <brid:Prefix></brid:Prefix>
 <brid:Suffix>Cxvb</brid:Suffix>
 <brid:Currency>EUR</brid:Currency>
 <brid:Format>2</brid:Format>
 <brid:Atomized>N</brid:Atomized>
</brid:MediaData>

我如何解析它:

p

ackage simbaOnlineReplacement;

import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import ta.maxcare.help.DBSor;




public class XMLTest2 {
    public static void main(String[] args) {

        try {
            String data = new DBSor().getContentData("106897066");

            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            InputSource is = new InputSource(new StringReader(data));
            Document doc = dBuilder.parse(is);
            doc.getDocumentElement().normalize();
            System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
            NodeList nList = doc.getElementsByTagName("MediaData");
            System.out.println("----------------------------");
            for (int temp = 0; temp < nList.getLength(); temp++) {
                Node nNode = nList.item(temp);
                System.out.println("\nCurrent Element :" + nNode.getNodeName());
                if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                    Element eElement = (Element) nNode;

                    System.out.println("First Name : " + eElement.getElementsByTagName("FirstName").item(0).getTextContent());

                    System.out.println("LastName : " + eElement.getElementsByTagName("LastName").item(0).getTextContent());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

並且給定錯誤:

[致命錯誤]:14:2:根元素之后的文檔中的標記必須格式正確。 org.xml.sax.SAXParseException; lineNumber:14; columnNumber:2; 根元素后面的文檔中的標記必須格式正確。 在com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(未知源)在com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(未知源)在simbaOnlineReplacement.XMLTest2.main (XMLTest2.java:23)

在格式正確的XML中,您必須具有一個根元素。 brid:PaymentData brid:AccountDatabrid:PaymentDatabrid:PaymentData brid:MediaData處於同一級別,這是錯誤的。 作為示例,您應該有一個包含所有元素的根元素。

您的XML是格式良好的外部常規解析實體,但不是格式正確的文檔。 因此,最簡單的處理方法是創建一個簡單的包裝文件,將其作為外部實體引用:

<!DOCTYPE wrapper [
<!ENTITY e SYSTEM "data.xml">
]>
<wrapper>&e;</wrapper>

然后解析包裝文件。

暫無
暫無

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

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