允許這是一個XML文檔(之前的XML聲明和XSLT處理指令的句子和空白在輸入的一部分):錯誤解析XML:內容未在序言
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/3.0/style/exchange.xsl"?>
<mts:meta name="elapsed-time" value="18" />
<exchange-documents>
<exchange-document country="US" number="8049504">
....
....
....
</exchange-document>
</exchange-documents>
我解析的XML和使用XPath。在大多數的XML文件中,第一行包含一些文本或空格(參見上面的XML)
如果沒有領先的文本,它成功地解析,但如果出現任何文本它產生下面的錯誤:
--- exec-maven-plugin:1.2.1:exec (default-cli) @ XMLHandling ---
[Fatal Error] :1:1: Content is not allowed in prolog.
我該如何解決這個問題?
,我使用的代碼:
public static void main(String[] args) throws ParseException {
String filePath = "D:/newxml.xml";
try {
FileInputStream file = new FileInputStream(new File(filePath));
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document xmlDocument = builder.parse(file);
XPath xPath = XPathFactory.newInstance().newXPath();
String pubOrPatentNumber = xPath.compile("//preference").evaluate(xmlDocument);
...
...
}
}
我可以手動刪除文本和執行,但我需要我的代碼內解決這個自動清理的輸入。
極有可能是字節順序標記。在這裏看到可能的解決方案:http://stackoverflow.com/questions/21891578/removing-bom-characters-using-java –
在代碼級別上,您可以使用字符串庫函數,即查找第一次出現「 ?」在包含文檔的輸入字符串中,然後從這裏開始,然後解析它。不過,由於格式錯誤,我建議謹慎行事。確保XML文檔始終保持良好狀態是避免此類問題的最佳實踐。我希望這有幫助! –