XPath脚本不适用于输入一,但可以完美地用于输入二

莱纳斯

好的,我不太确定如何描述我的问题,基本上我有一个XML文件,我试图通过在XML文件中搜索包含字符串的节点来获取一些信息。

我的问题是,如果仅包含<table>我感兴趣标记而不是整个XML文件,则以下脚本可以完成此任务这就是我所说的输入二,效果很好。

但是,如果我使用整个XML文件,则无法正常工作,这是脚本: (tidy -asxml input.xml | xmllint --xpath 'descendant-or-self::*[starts-with(text(), "Aktiv tid:")]/following-sibling::*/text()' -) 2>/dev/null

这是输入的一个XML文件(完整的XML文件):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <title>SpeedTouch - Bredbandsanslutning</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <script type="text/javascript">var g_navitem = -1;</script>
  <script type="text/javascript"> var g_focus = -1;</script>
  <script type='text/javascript' src='/util.js'></script>
  <link rel="stylesheet" type="text/css" href="/styles.css">
</head>
<body onLoad="setFocus();" height="100%" style="margin:0px">
  <noscript>
    <h1>Thomson - SpeedTouch</h1>
    <h4>To view the Web interface of your device, JavaScript must be supported and enabled on your browser! <br><br>Aktivera skriptstöd och uppdatera webbläsaren.</h4>
  </noscript>
  <table cellspacing="0" cellpadding="0" border="0" width="100%" style="background-color:white" height="100%">
    <tr>
      <td colspan="2">
        <table width="100%" cellspacing="0" cellpadding="0" border="0">
          <tr>
            <td style="padding-left:15px;" class="Product">THOMSON&nbsp;ST780</td><td align="right" style="padding:5px 15px 0px 0px;"><a href="http://www.thomson-broadband.com"><img src="/images/Thomson.gif" border="0" width="109" height="50" alt="THOMSON logo"></a></td>
          </tr>      
          <tr>
            <td colspan="2">
              <table width="100%" cellspacing="0" cellpadding="0" border="0">
                <tr style="background-image:url(/images/bar.gif)">
                  <td width="20%"></td>
                  <td width="10" align="left"></td>
                  <td width="10"><img src="/images/barend_left.gif"></td>
                  <td><img width="100%" height="10" src="/images/spacer_white.gif"></td>
                </tr>
                <tr style="background-image:url(/images/bar.gif)">
                  <td align="right"><img width="100%" height="10" src="/images/spacer_white.gif"></td>
                  <td width="10"><img src="/images/barend_right.gif"></td>
                  <td colspan="2"></td>
                </tr>
              </table>
            </td>
          </tr>
          <tr>
            <td></td><td align="right" valign="middle" style="padding-right:15px"><form name="langSelect" action="/cgi/language.cgi" method=post><span class="langSelect"><input type="hidden" name=6 value="en">
<a href="" onClick="setLanguage('en');submitForm(document.langSelect,0);return false;" title="English">en</a>&nbsp;
<strong>sv</strong>&nbsp;</span></form></td>
          </tr>
        </table>
      </td>
    </tr>
    <tr>
      <td colspan="2"><img src="/images/spacer.gif" border="0" width="1" height="10" alt=""><br></td>
    </tr>
    <tr>
      <td valign="top" style="padding-top:15px;padding-left:15px;">
        <script type="text/javascript">writeMenu();</script>
      </td>
      <td valign="top" style="background:url(/images/wave.gif) no-repeat top center;height:340px">
        <table cellpadding="0" cellspacing="0" border="0" style="margin-top:15px">
          <script type="text/javascript">writeNavBar();</script>
          <tr>
            <td>
              <table width="700" cellspacing="0" cellpadding="0" border="0">
                <tr>
                  <td>
                   <script type="text/javascript">pm_write_messages();</script>


<div class='contentcontainer'>
<hr>
<div class='contentitem'>
<table cellspacing='0' cellpadding='0'>
<tr><td class='icon' valign='top' width='100px'><img src='/images/cplngrxl.gif' alt='Fysisk anslutning OK'></td>
<td class='data' valign='top'><table cellspacing='0' cellpadding='0'><tr><td align='left'><span class='itemtitle'>DSL-anslutning</span></td><td align='right'></td></tr>
<tr><td colspan='2'><br><table cellspacing='0' cellpadding='0' width='100%'><tr><td width='40' valign='top'><img src='/images/bull__md.gif' alt=''></td><td valign='top'>
<span class='blocktitle'><a href="javascript:GoAndRemember('/cgi/b/dsl/ov/', '')">Visa mer...</a></span><br>
<table width='100%' class='datatable' cellspacing='0' cellpadding='0'>
<tr><td></td><td width='30px'></td><td width='220px'></td><td width='50px'></td></tr>
<tr><td height='7' colspan='4'><img src='/images/spacer.gif' width='1' height='7' border='0' alt=''></td></tr>
<tr><td width='170'>Aktiv tid:</td><td colspan='3'>1 dag, 21:44:06</td></tr>
<tr><td height='7' colspan='4'><img src='/images/spacer.gif' width='1' height='7' border='0' alt=''></td></tr>
<tr><td width='170'>Bandbredd (upp/ned) [kbps/kbps]:</td><td colspan='3'>1.058 / 21.373</td></tr>
<tr><td height='7' colspan='4'><img src='/images/spacer.gif' width='1' height='7' border='0' alt=''></td></tr>
<tr><td width='170'>Överförda data (skickade/mottagna) [GB/GB]:</td><td colspan='3'>1,97 / 45,23</td></tr>
</table>
</td></tr></table>
</td></tr></table></td></tr></table></div>
<hr>
<div class='contentitem'>
<table cellspacing='0' cellpadding='0'>
<tr><td class='icon' valign='top' width='100px'><img src='/images/cintgrxl.gif' alt='Internetanslutning OK'></td>
<td class='data' valign='top'><table cellspacing='0' cellpadding='0'><tr><td align='left'><span class='itemtitle'>Internet</span></td><td align='right'></td></tr>
<tr><td colspan='2'><br><table cellspacing='0' cellpadding='0' width='100%'><tr><td width='40' valign='top'><img src='/images/bull__md.gif' alt=''></td><td valign='top'>
<span class='blocktitle'><a href="javascript:GoAndRemember('/cgi/b/is/_ethoa_/ov/', 'name=Internet')">Visa mer...</a></span><br>
<table width='100%' class='datatable' cellspacing='0' cellpadding='0'>
<tr><td></td><td width='30px'></td><td width='220px'></td><td width='50px'></td></tr>
<tr><td height='7' colspan='4'><img src='/images/spacer.gif' width='1' height='7' border='0' alt=''></td></tr>
<tr><td width='170'>Typ:</td><td colspan='3'>ETHoA</td></tr>
<tr><td height='7' colspan='4'><img src='/images/spacer.gif' width='1' height='7' border='0' alt=''></td></tr>
<tr><td width='170'>Aktiv tid:</td><td colspan='3'>1 dag, 21:44:04</td></tr>
<tr><td height='7' colspan='4'><img src='/images/spacer.gif' width='1' height='7' border='0' alt=''></td></tr>
<tr><td width='170'>IP-adress:</td><td colspan='3'>x.x.x.x</td></tr>
<tr><td height='7' colspan='4'><img src='/images/spacer.gif' width='1' height='7' border='0' alt=''></td></tr>
<tr><td width='170'>Överförda data (skickade/mottagna) [GB/GB]:</td><td colspan='3'>1,56 / 39,92</td></tr>
</table>
</td></tr></table>
</td></tr></table></td></tr></table></div>
</form>
<script type='text/javascript'>generateTasks()</script>
</div>
                  </td>
                </tr>
              </table>
            </td>
          </tr>
        </table>
      </td>
    </tr>
  </table>
</body>
</html>

这是输入的两个XML文件:

<hr>
<div class='contentitem'>
<table cellspacing='0' cellpadding='0'>
<tr><td class='icon' valign='top' width='100px'><img src='/images/cplngrxl.gif' alt='Fysisk anslutning OK'></td>
<td class='data' valign='top'><table cellspacing='0' cellpadding='0'><tr><td align='left'><span class='itemtitle'>DSL-anslutning</span></td><td align='right'></td></tr>
<tr><td colspan='2'><br><table cellspacing='0' cellpadding='0' width='100%'><tr><td width='40' valign='top'><img src='/images/bull__md.gif' alt=''></td><td valign='top'>
<span class='blocktitle'><a href="javascript:GoAndRemember('/cgi/b/dsl/ov/', '')">Visa mer...</a></span><br>
<table width='100%' class='datatable' cellspacing='0' cellpadding='0'>
<tr><td></td><td width='30px'></td><td width='220px'></td><td width='50px'></td></tr>
<tr><td height='7' colspan='4'><img src='/images/spacer.gif' width='1' height='7' border='0' alt=''></td></tr>
<tr><td width='170'>Aktiv tid:</td><td colspan='3'>1 dag, 21:44:06</td></tr>
<tr><td height='7' colspan='4'><img src='/images/spacer.gif' width='1' height='7' border='0' alt=''></td></tr>
<tr><td width='170'>Bandbredd (upp/ned) [kbps/kbps]:</td><td colspan='3'>1.058 / 21.373</td></tr>
<tr><td height='7' colspan='4'><img src='/images/spacer.gif' width='1' height='7' border='0' alt=''></td></tr>
<tr><td width='170'>Överförda data (skickade/mottagna) [GB/GB]:</td><td colspan='3'>1,97 / 45,23</td></tr>
</table>
</td></tr></table>
</td></tr></table></td></tr></table></div>
<hr>
<div class='contentitem'>
<table cellspacing='0' cellpadding='0'>
<tr><td class='icon' valign='top' width='100px'><img src='/images/cintgrxl.gif' alt='Internetanslutning OK'></td>
<td class='data' valign='top'><table cellspacing='0' cellpadding='0'><tr><td align='left'><span class='itemtitle'>Internet</span></td><td align='right'></td></tr>
<tr><td colspan='2'><br><table cellspacing='0' cellpadding='0' width='100%'><tr><td width='40' valign='top'><img src='/images/bull__md.gif' alt=''></td><td valign='top'>
<span class='blocktitle'><a href="javascript:GoAndRemember('/cgi/b/is/_ethoa_/ov/', 'name=Internet')">Visa mer...</a></span><br>
<table width='100%' class='datatable' cellspacing='0' cellpadding='0'>
<tr><td></td><td width='30px'></td><td width='220px'></td><td width='50px'></td></tr>
<tr><td height='7' colspan='4'><img src='/images/spacer.gif' width='1' height='7' border='0' alt=''></td></tr>
<tr><td width='170'>Typ:</td><td colspan='3'>ETHoA</td></tr>
<tr><td height='7' colspan='4'><img src='/images/spacer.gif' width='1' height='7' border='0' alt=''></td></tr>
<tr><td width='170'>Aktiv tid:</td><td colspan='3'>1 dag, 21:44:04</td></tr>
<tr><td height='7' colspan='4'><img src='/images/spacer.gif' width='1' height='7' border='0' alt=''></td></tr>
<tr><td width='170'>IP-adress:</td><td colspan='3'>x.x.x.x</td></tr>
<tr><td height='7' colspan='4'><img src='/images/spacer.gif' width='1' height='7' border='0' alt=''></td></tr>
<tr><td width='170'>Överförda data (skickade/mottagna) [GB/GB]:</td><td colspan='3'>1,56 / 39,92</td></tr>
</table>
</td></tr></table>
</td></tr></table></td></tr></table></div>
</form>
<script type='text/javascript'>generateTasks()</script>
</div>
                  </td>
                </tr>
              </table>
            </td>
          </tr>
        </table>
      </td>
    </tr>
  </table>
</body>
</html>

因此由于某种原因,如果我删除了包括此行之前的所有内容,请执行以下操作:

<div class='contentcontainer'>

脚本工作正常。

这对我来说似乎很奇怪,但似乎是一个非常基本的问题。

所以我的问题是如何解决这个问题?

提前致谢!

查尔斯·达菲

如果您尝试仅运行管道的第一部分以检查其输出,则会注意到

tidy -asxml input.xml

不返回给定文件的数据。

这是由于虚假的</form>(因为文档仅包含一个<form>包含两个</form>,如果您选择阅读HTMLTidy,则HTMLTidy会在写给stderr的消息中明确地告诉您


简而言之:尽管Tidy可以清除带有警告的文档,但是任何有错误的文档都需要先修复,然后才能进行处理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Django-图像滚动功能不适用于localhost,但可以在127.0.0.1上完美运行

Vue应用程序不适用于生产版本,但可以与开发很好地配合

jasmine.clock()。tick()不适用于$ timeout和去抖动,但可以与setTimeout一起使用

Excpetionmapper不适用于Wildfly Swarm,但可以在Wildfly Server中使用

代理设置不适用于NetBeans,但可以通过命令行使用

Ruby On Rails回调不适用于Heroku,但可以在本地使用

Flask中的线程不适用于UWSGI,但可以在命令行中使用

查询不适用于 PHP,但可以直接在 Mysql 中使用

谷歌smtp不适用于部署,但可以在本地服务器上使用

Heroku PostgreSQL查询不适用于Heroku,但可以在本地工作

JavaScript提交不适用于Chrome / Safari,但可以在Firefox / IE中正常运行

脚本适用于文件输入,但不适用于stdin

背景色不适用于相对对象,但可以用于绝对定位

CSS 不适用于提交的输入

initial =不适用于表单输入

焦点不适用于输入字段

buttonset()不适用于动态输入

onclick不适用于按钮输入

React-新的上下文API不适用于Class.contextType,但可以与Context.Consumer一起使用

Codesandbox“编辑预览”不适用于Aurelia,但可以与其他框架和原始HTML一起使用

jQuery不适用于首次点击,但可以与其他所有点击一起使用

Google Map,样式不适用于带有类的标记img,但可以使用img [src]

jQuery菜单不适用于服务器,但可以在本地主机上正常工作

双工WCF客户端不适用于WinForms或WPF,但可以与控制台正常工作

日期条件不适用于我的应用程序,但可以在SQL Server中使用

Autohotkey脚本不适用于FreeCommander

替换脚本不适用于Unicode txt文件

Python脚本不适用于Django Shell

嵌套Shell脚本不适用于列表变量