我有一个包含XML的java字符串。我想通读这个Java String包装CData中的所有文本节点,只是我不知道如何做到这一点。这样做的原因是,这是一个包含尖括号的文本节点,当我尝试解析String时会导致异常。任何人都可以帮助我吗?
<node> this < is text <node> <node2> this is < text <node2>
我想知道是否有一种简单的方法可以将此文本作为XMLReader的字符串读取并在文本周围插入CData
感谢
Stefan
答案 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