【发布时间】:2013-04-02 00:34:30
【问题描述】:
解释自己的最佳方式是给你看一段代码:
这是我正在解析的 XML 文件:
<module>
<name>name1</name>
<type>type</type>
<content>
<p>This is some piece of code that should be treated as a full string, even that 'p' tag, because I want to use all content inside p tag for a webview in android.
</p>
<h1>This is a big classy title in html</h1>
</content>
</module>
正如您在p 标签中看到的那样,基本上我想获取<content> 标签的内容并将其保存到要处理的字符串中。所以最后,我想初始化一个字符串,如下所示:
String content = "<p> This is some piece.......</p> <h1>This is....</h1>";
这是我用来获取<name>、<type> 值的代码:
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(contingut);
doc.getDocumentElement().normalize();
NodeList nodes = doc.getElementsByTagName("module");
for (int i = 0; i < nodes.getLength(); i++) {
Node node = nodes.item(i);
Element element = (Element) node;
if(element.getNodeType() == Element.ELEMENT_NODE){
System.out.println(getValue("name",element));
System.out.println(getContent("content",element));
}
}
private static String getValue(String tag, Element element) {
String value="";
try {
NodeList nodes = element.getElementsByTagName(tag).item(0).getChildNodes();
Node node = (Node) nodes.item(0);
value=node.getNodeValue();
} catch (Exception e){
value=null;
}
return value;
}
例如,在解析时,名称正确打印name1,但content 返回空白。
知道如何将<content> 的内容作为字符串获取吗?
谢谢。
编辑
private static String getContent(String tag, Element element) {
String value="";
try {
Node nodes = element.getElementsByTagName(tag).item(0);
value = nodes.getTextContent();
} catch (Exception e){
value=null;
}
return value;
}
Log.d("debugging",getContent("content",element));
这是打印这个:
%20%20%20%20%20This%20some%20piece ....
它似乎没有返回字符串<p>。
【问题讨论】:
-
您发布的xml格式不正确,dom解析器将抛出解析异常。如果这是您想要按照@AlexS 建议解析的 xml,您可能需要使用 SAX Parser。
-
@code13 我的错,写在这里的时候打错了。它现在已正确关闭。
-
是否可以将所有标签都放在CDATA内容下,还是应该专门这样?
-
应该是这种方式,因为 xml 是由 3rd 以这种方式发送的。
-
@SergiCastellsaguéMillán 您是否尝试过在我的答案中发布的 getContent 函数,因为我尝试使用您的 xml 及其为我工作(它与您的 getValue 相同,只是函数从 getValue 更改为 getContent)。
标签: java xml parsing xml-parsing