2011-01-27 54 views
0

我有以下的代碼變成一個字符串,我傳遞到函數,到文檔:如何將單個單詞轉換爲有效的xml?

DocumentBuilderFactory dbFactory_ = DocumentBuilderFactory.newInstance(); 
Document doc_; 

void toXml(String s) 
{ 
    documentBuild(); 
    DocumentBuilder dBuilder = dbFactory_.newDocumentBuilder(); 
    StringReader reader = new StringReader(s); 
    InputSource inputSource = new InputSource(reader); 
    doc_ = dBuilder.parse(inputSource); 
} 

的問題是,一些遺留代碼,我使用通行證進入此功能toxml用於一個單個詞如RANDOMFICTION。我想在嘗試解析它之前將這些調用轉換爲有效的xml。現在,如果我用s = FICTION調用函數,它將返回一個SAXParseExeption錯誤。任何人都可以通過正確的方式提醒我這麼做嗎?如果您有任何問題,請告訴我。

謝謝您的時間

-Josh

+2

首先,您需要準確詳細地說明**當某人傳遞字符串'FICTION`時,您需要什麼有效的XML輸出。當前的行爲可以說是正確的,因爲*不是有效的XML,所以您必須執行某種轉換才能將其「包裝」到XML文檔中。 – 2011-01-27 18:21:32

回答

1

這將創建一個元素測試一個XmlDocument

function buildXml(string s) { 
    XmlDocument d = new XmlDocument(); 
    d.AppendChild(d.CreateElement(s)); 

    StringWriter sw = new StringWriter(); 
    XmlTextWriter xw = new XmlTextWriter(sw); 
    d.WriteTo(xw); 
    return sw.ToString(); 
} 

buildXml("Test"); //This will return <Test /> 

它有點難看,但它不必做你自己的任何字符串工作創建XML)

你可以在添加此嘗試捕獲你的方法,所以如果它無法直接將它加載爲XML,它會將字符串傳遞給它,然後嘗試加載它。

1

您是否嘗試過看似明顯<FICTION/><FICTION></FICTION>

+0

嗯,這是我的第一本能,但問題是,那麼我將不得不做字符串操作來檢查並添加'<'和'/'我想要一些能爲我做的事情。 – Grammin 2011-01-27 18:52:48

+0

@Grammin我擔心你不能逃避,因爲XML文檔**必須至少有一個根元素。 – biziclop 2011-01-27 19:25:27