2011-01-27 6 views
0

私は、文書の中に、関数に渡すことを、文字列に変わり、次のコードを持っている:1単語を有効な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関数Aへのパスを使用しているレガシーコードの一部でありますRANDOMまたはFICTIONのような単一の単語。私はそれを解析しようとする前に、これらの呼び出しを有効なXMLに変換したいと思います。今私はs = FICTIONで関数を呼び出すとSAXParseExeptionエラーを返します。誰もがこれを行う正しい方法で私に助言することができますか?ご質問がありましたらお知らせください。

-Josh

+2

まず、誰かが 'FICTION'文字列を渡しているときに、どんな妥当なXML出力が**正確に**必要となるでしょう。現在の動作は間違いなく正当なものです。なぜなら、*有効なXMLではないからです。そうすれば、XML文書で「ラップ」するために何らかの変換を実行する必要があります。 –

答えて

1

この要素テスト

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 /> 

そのビット醜いとXmlDocumentオブジェクトを作成しますが、それはあなた自身の上の任意の文字列の作業を行うことなく、XMLを作成します。)

あなたがでこれを追加することができますあなたのメソッドでtryキャッチするので、XMLとして直接読み込むことができない場合、これに文字列を渡してからロードしようとします。

+0

答えてくれてありがとうございましたdavid、これはまさに私が入力した文字列がすでに有効なxmlであることを除いて欲しかったものです。文字列sが有効なxmlであるかどうかを確認するにはどうすればよいですか? – Grammin

+0

"メソッドのtry catchにこれを追加することができます。そうすれば、XMLとして直接ロードできない場合は、文字列をこのパスに渡してロードしようとします。素晴らしいソリューションは非常にありがとう! – Grammin

+0

かなり滑らかです。しかし、それがうまくいくとは思えない;) – Anonymoose

1

は、あなたが一見明白<FICTION/>または<FICTION></FICTION>みましたお時間をいただき、ありがとうございますか!

+0

それは私の最初の本能でしたが、それで問題は、文字列操作をチェックして '<'と '/'を追加しなければならないことです。 – Grammin

+0

@Grammin XML文書で**少なくともルート要素を持っていなければならないので、本当にそれをエスケープすることはできません。 – biziclop

関連する問題