插入CData XML解析Java String

时间:2013-01-04 13:23:17

标签: java xml xml-parsing sax

我有一个包含XML的java字符串。我想通读这个Java String包装CData中的所有文本节点,只是我不知道如何做到这一点。这样做的原因是,这是一个包含尖括号的文本节点,当我尝试解析String时会导致异常。任何人都可以帮助我吗?

<node> this < is text <node> <node2> this is < text <node2>

我想知道是否有一种简单的方法可以将此文本作为XMLReader的字符串读取并在文本周围插入CData

感谢

Stefan

2 个答案:

答案 0 :(得分:1)

也许是这样的事情(对任何低效率提前道歉:

if(currentNode instanceof XMLNodeType.Text)  
{  
     String toWrite = String.format("<![CDATA[%s]]>", currentNode.getText());   
     // or whatever retrieves text of the node
}  

看起来你需要按摩数据才能成为有效的XML。这个过程当然高度依赖于您的输入。因此,基本上发生的是您收到一个需要转换为有效XML的大字符串。这里的优点是您可以定义第三方遵守的模式,这是与他们的会议,因此它超出了讨论的范围,但值得一提。一旦定义了此模式,您将知道哪些节点被视为“文本”节点,并且需要包含在CDATA块中。

基本理念是:

List<String> textTags = new ArrayList<String>();  
textTags.add("NODE");  
//other things to add
String bigAwfulString = inputFromThirdParty();   
String validXML = ""; 
for(String currentNode : bigAwfulString.split("yourRegexHere")  
{  
    if(textTags.contains(currentNode)  
    {  
           validXML+=String.format("<![CDATA[%s]]>", currentNode.getText());    
           continue;
    }   
    validXML+=currentNode;
}

答案 1 :(得分:0)

试试这个,它对我有用。
http://www.java2s.com/Code/Java/XML/AddingaCDATASectiontoaDOMDocument.htm

belongsToMany