我使用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。
答案 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);