-1

私は日食を使用しており、ノードの 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 ためにこれを取り出して、どうすればいいですか?ありがとう!

その Web サイトの xml ファイル (URL のパラメーター):

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

結果 i は 1 です。しかし、ノードはテキスト文字列を与えません。mで始まる「説明」のリストです。私が望むのは、そのテキストを取り出すことだけです。私が本当に解析する必要があるのは、巨大なテーブルである内部 Web サイトであるためです。そして、各カテゴリに従ってそのテーブルのデータを保存する必要があります。たとえば、1 つのファイルには名前と数学のスコアが含まれ、もう 1 つのファイルには名前と物理学が含まれます。

<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>

and の後のすべてなので、 nodeList でなければならないと思います。

4

1 に答える 1

0

evaluate

XPath は、さまざまなオブジェクトとして表す必要があるドキュメントのさまざまな部分を返すことができるため、さまざまなオブジェクトを返すことができます。呼び出している評価のバージョンは、テキストを取得することがわかっている場合はおそらく過剰な NodeList を返します (XPath が推奨します)。

代わりに、より単純なものを呼び出すことができます:

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);
于 2013-01-24T10:04:54.313 に答える