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

Java 请检查在我的android中不起作用的xpath,java,android,xpath,Java,Android,Xpath,我使用eclipse,我想挑选节点mytag文本。我该怎么做才能得到它?我有以下代码: XPath xpath = XPathFactory.newInstance().newXPath(); String expression = "/outertag/innertag/mytag/text()"; InputSource inputSource = new InputSource("http://www.anddev.or

我使用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();
我提到的材料是 现在,当我签入debug时,它会给节点提供非常复杂的内容,但没有一个是mytag文本——和dev.org rulez为了去掉这个,我应该怎么做? 谢谢

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


anddev.org rulez=)
结果我是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>

MICROSOFT WINDOWS中的代码页支持
代码页
ID 名称 机场核心计划 OEMCP Windows
NT3.1 Windows
NT3.51 Windows
95 1200Unicode(ISO/IEC-10646的BMP)XX* 1250Windows 3.1东欧XXXX 1251Windows 3.1西里尔xxxx 1252Windows 3.1美国标准(ANSI)XXXX 1253Windows 3.1 GreekXXXX 1254Windows 3.1 TurkishXXXX 1255HebrewXX 1256ArabicXX 1257BalticXX 1361Corean(Johab)X**X 437MS-DOS美国Sxxx 708阿拉伯语(ASMO 708)XX 709Arbic(ASMO 449+,BCON V4)XX 710阿拉伯语(透明阿拉伯语)XX 720阿拉伯语(透明ASMO)XX
和之后的一切,所以我认为它必须是nodeList。

评估

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

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

String evaluate(java.lang.String expression, InputSource source) 
例如:


您应该发布一个XML示例代码中给出了示例,InputSource的参数它是一个非常大的文件吗?如果标记片段太大,您可以将其粘贴到此处。请确切地告诉我们您从代码中获得的结果。所显示的是
inti=nodes.getLength(),以及您在代码中提到的示例(
http://www.anddev.org/images/tut/basic/parsingxml/example.xml
)和路径
/outertag/innertag/mytag/text()
我希望
I
具有值
1
。你得到了不同的值吗?在哪里以及如何读取返回节点的内容?嘿,我已经更改了帖子。嘿,如果它只有一个节点,这真的很有效。但实际上它是一个表,它有多个,我必须把它们全部取出来,并检查“myTagText”。因为真正的xml网站是一个内部学生分数表,有些项目是空的,无法事先知道它是什么样子。但是,嘿,谢谢您的帮助,在这种情况下,您的XPath需要更改。目前,它从myTag中获取文本(这适用于上面包含的示例XML),但您是说在真正的XML中,它不是myTag中的文本,而是更多的节点。你能给出一个你想要解析的实际XML的例子吗?嗨,我用一个XML表格的例子修改了这篇文章,为了便于阅读,我需要过滤掉后面的所有内容,并找出标题(in)、学生姓名和分数(in)。谢谢你的帮助。
String evaluate(java.lang.String expression, InputSource source) 
String myTagText = "";
try {
    myTagText = xpath.evaluate(expression, inputSource);
} catch (XPathExpressionException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
System.out.println(myTagText);