<response>
<object>
<id>793675</id>
<name>Žirmūnų</name>
...
获取值name
我使用函数
public String getValue(Element item, String str) {
NodeList n = item.getElementsByTagName(str);
return getElementValue(n.item(0));
}
public final String getElementValue( Node elem ) {
Node child;
if( elem != null){
if (elem.hasChildNodes()){
for( child = elem.getFirstChild(); child != null; child = child.getNextSibling() ){
if( child.getNodeType() == Node.TEXT_NODE || child.getNodeType() == Node.CDATA_SECTION_NODE || child.getNodeType() == Node.ELEMENT_NODE){
return child.getNodeValue();
}
}
}
}
return "";
}
这样:
Document doc = XMLfromString(xml);
NodeList nodes = doc.getElementsByTagName("object");
Element e = (Element)nodes.item(0);
String restName = Html.fromHtml(getValue(e, "name")).toString();
但是在结果中我只有值,其中包含#
之前的字符
&
中只有restName
即字符串被截断为#
为什么? xml中允许使用字符#
,不是吗?
如何获得完整的字符串值?
答案 0 :(得分:0)
使用Sax Parser和override方法,如下所示:
您可能希望使用sax默认处理程序。看看它是否有效。如果不是,可能需要扩展默认的Handler并覆盖此方法的行为以正确存储值。 myURLString是您在扩展类中定义的变量。然后可以在endElement方法中访问此变量以进行示例。你完全可以控制它。
所以一种方法是扩展org.xml.sax.helpers.DefaultHandler;
protected String myValueString;
@Override
public void characters(char[] ch, int start, int length) throws SAXException
{
super.characters(ch, start, length); // deal with escape values here.
myValueString = ...
}
然后在endElement(){
中 check if matches your type and if so use myValueString;