请检查这个在我的android中不起作用的xpath

时间:2013-01-24 09:20:41

标签: java android xpath

我使用eclipse,我想挑选节点mytag文本。我该怎么做才能得到它?我有以下代码:

           XPath xpath = XPathFactory.newInstance().newXPath();
            String expression = "/outertag/innertag/mytag/text()";
            InputSource inputSource = new InputSource("http://www.anddev.org/images/tut/basic/parsingxml/example.xml");
            NodeList nodes = null;
            try {
                nodes = (NodeList) xpath.evaluate(expression, inputSource, XPathConstants.NODESET);
            } catch (XPathExpressionException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            int i=nodes.getLength();

我提到的材料是http://www.w3schools.com/xpath/xpath_examples.asp 现在,当我检查调试时,它给节点内容非常复杂,但它们都不是mytag文本 - anddev.org rulez为了解决这个问题,我该怎么办? 谢谢!

该网站中的xml文件(URL参数):

<?xml version="1.0"?>
<outertag>
    <innertag sampleattribute="innertagAttribute">
        <mytag>
            anddev.org rulez =)
        </mytag>
        <tagwithnumber thenumber="1337"/>
    </innertag>
</outertag>
结果i中的

是1.但是节点没有给出任何文本字符串。这是以m开头的“描述”列表。我想要的只是把那个文字拿出来。因为我真正需要解析的是一个内部网站,这是一个巨大的表。我需要根据每个类别存储该表中的数据。例如,一个文件包含名称和数学分数,另一个文件包含名称和物理。

<TABLE border="2" frame="hsides" rules="groups"
          summary="Code page support in different versions
                   of MS Windows.">
<CAPTION>CODE-PAGE SUPPORT IN MICROSOFT WINDOWS</CAPTION>
<COLGROUP align="center">
<COLGROUP align="left">
<COLGROUP align="center" span="2">
<COLGROUP align="center" span="3">
<THEAD valign="top">
<TR>
<TH>Code-Page<BR>ID
<TH>Name
<TH>ACP
<TH>OEMCP
<TH>Windows<BR>NT 3.1
<TH>Windows<BR>NT 3.51
<TH>Windows<BR>95
<TBODY>
<TR><TD>1200<TD>Unicode (BMP of ISO/IEC-10646)<TD><TD><TD>X<TD>X<TD>*
<TR><TD>1250<TD>Windows 3.1 Eastern European<TD>X<TD><TD>X<TD>X<TD>X
<TR><TD>1251<TD>Windows 3.1 Cyrillic<TD>X<TD><TD>X<TD>X<TD>X
<TR><TD>1252<TD>Windows 3.1 US (ANSI)<TD>X<TD><TD>X<TD>X<TD>X
<TR><TD>1253<TD>Windows 3.1 Greek<TD>X<TD><TD>X<TD>X<TD>X
<TR><TD>1254<TD>Windows 3.1 Turkish<TD>X<TD><TD>X<TD>X<TD>X
<TR><TD>1255<TD>Hebrew<TD>X<TD><TD><TD><TD>X
<TR><TD>1256<TD>Arabic<TD>X<TD><TD><TD><TD>X
<TR><TD>1257<TD>Baltic<TD>X<TD><TD><TD><TD>X
<TR><TD>1361<TD>Korean (Johab)<TD>X<TD><TD><TD>**<TD>X
<TBODY>
<TR><TD>437<TD>MS-DOS United States<TD><TD>X<TD>X<TD>X<TD>X
<TR><TD>708<TD>Arabic (ASMO 708)<TD><TD>X<TD><TD><TD>X
<TR><TD>709<TD>Arabic (ASMO 449+, BCON V4)<TD><TD>X<TD><TD><TD>X
<TR><TD>710<TD>Arabic (Transparent Arabic)<TD><TD>X<TD><TD><TD>X
<TR><TD>720<TD>Arabic (Transparent ASMO)<TD><TD>X<TD><TD><TD>X
</TABLE>

以后的所有内容,所以我认为它必须是nodeList。

1 个答案:

答案 0 :(得分:0)

evaluate

可以返回不同的对象,因为您的XPath可以返回需要表示为不同对象的文档的不同部分。您正在调用的评估版本返回一个NodeList,如果您知道将要获取文本(您的XPath建议您这样做),那么这可能是一种过度杀伤。

相反,你可以称之为更简单:

String evaluate(java.lang.String expression, InputSource source) 

E.G:

String myTagText = "";
try {
    myTagText = xpath.evaluate(expression, inputSource);
} catch (XPathExpressionException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
System.out.println(myTagText);