2014-02-20 34 views
0

我有一種情況,當我需要我的字符串轉換爲包含
"CGNAME="<Input>GROUP1</Input>"我如何將字符串轉換成XML,其中包含尖括號

"<SOLRQUERY><I M="1" V="(1:2)OR(62:12)" CGNAME="<Input>GROUP1</Input>" BSLFLG="0" /></SOLRQUERY>" 

在參數XML具有值一個屬性JAVA我我通過上面的字符串

String escaped = StringEscapeUtils.escapeJava(value); 
Document CGXml = XPathReader.StringToXMLDocument(escaped); 

,我收到以下錯誤:

org.xml.sax.SAXParseException: Open quote is expected for attribute 

XPathReader是我在我的inBuilt類和StringToXMLDocument函數代碼。

public static Document StringToXMLDocument(String criteriaXML) throws ParserConfigurationException, SAXException, IOException 
{ 
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder db = dbf.newDocumentBuilder(); 
    InputSource isCriteriaXML = new InputSource(); 
    isCriteriaXML.setCharacterStream(new StringReader(criteriaXML)); 
    Document doc = db.parse(isCriteriaXML); 
    doc.getDocumentElement().normalize(); 
    return doc; 
} 
+0

你忘了問的問題也更多的信息,如:。你有什麼企圖解決這個問題,它是如何不起作用的(比如你看到的錯誤)會很有幫助 – Pshemo

+0

Thanx讓我更正確 – Manu

+0

沒問題現在不要忘了添加關於你使用什麼類的信息,因爲StringEscapeUtils或'XPathReader'不屬於t o標準的Java類。我假設'StringEscapeUtils'屬於AppacheCommons,但不能說任何關於第二類的東西。 – Pshemo

回答

0

你可以逃避你的角色。這意味着前添加\你的「

例如:

CGNAME\"=\"GROUP1\" 

所以,你的查詢字符串會是:

"<SOLRQUERY> 
    <I M=\"1\" V=\"(1:2)OR(62:12)\" CGNAME=\"<Input>GROUP1</Input>\" BSLFLG=\"0\" /> 
</SOLRQUERY>" 
+0

Thanx的答覆。但同時將其轉換爲XML我得到錯誤角括號不允許。 確切的錯誤是:org.xml.sax.SAXParseException:對於屬性,預期打開引號。 我正在使用此函數轉換爲XML。 public static Document StringToDom(String xmlSource) throws SAXException,ParserConfigurationException,IOException DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); return builder.parse(new InputSource(new StringReader(xmlSource))); } – Manu

+0

檢查我的更新..我想你忘了給所有的「字符 – ohlmar

+0

添加同樣的硬塗層字符串,它給出了以下錯誤: org.xml.sax.SAXParseException:屬性」CGNAME「的值與一個元素類型爲「null」的元素不能包含'<'字符 – Manu

相關問題