是否可以组合/连接两个Bys?
如果我有一个 By
By parentBy = new By.xpath(".//div[@class='parent']")
Run Code Online (Sandbox Code Playgroud)
和另一个 By
By childBy = new By.xpath(".//div[@class='child']")
Run Code Online (Sandbox Code Playgroud)
是否可以将两个Bys连接到具有此xpath的新Bys?
By combinedBy = new By.xpath(".//div[@class='parent']/div[@class='child']")
Run Code Online (Sandbox Code Playgroud)
就像是
By combinedBy1 = parentBy + childBy
By combinedBy2 = parentBy.Concat(childBy)
Run Code Online (Sandbox Code Playgroud)
用例:
我们使用页面对象模型.
现在我有一个表作为一种子页面对象模型.该表应该有一个选择一些数据的方法.由于一些html结构问题(它是第三方),我必须通过检查一个单元格的类和该单元格的文本/内容来xpath一个div(行)的子表.
我正在编写一个C#/ VB程序,用于根据XML中收到的信息报告数据.
我的情况是我每月收到许多XML(大约100-200) - 每个大小从10mb到350mb不等.对于这些XML中的每一个,我只需要一小部分数据(少于任何一个文件的整个数据的5%),以便生成必要的报告.
此外,该数据子集将始终保持在相同的键结构中(它可能存在于多个键中,也可能存在于不同的级别,但它始终存在于相同的键名中/包含它的键将始终具有具有相同的属性,如"名称"等)
所以,我目前关于如何做到这一点的想法是:
我的主要问题是什么才是最好的方法来获取数据?我最熟悉XPath,但是对于200MB大小的多个文件,我担心在整个文件中加载性能问题.
我见过/研究的其他事情是:
老实说,我不知道标准是什么,因为大量的XML和文件大小的差异,我不熟悉任何其他方法 - 例如,链接XMLs到SQL Server直接/使用ADO来查询XML - 因此,不知道它们可能的好处/缺点.
如果你们中的任何一个人处于类似的情况,我真的很感激任何一种正确方向的指针/至少验证我的方法不是最糟糕的那个:)
谢谢!!!
我们正在将旧版HTML文件转换为DITA.我想在href属性中转换带有反斜杠的Windows路径
<a href="c:\developer\file.html">
Run Code Online (Sandbox Code Playgroud)
转发斜线
<xref href="c:/developer/file.dita">
Run Code Online (Sandbox Code Playgroud)
我试图使用替换和翻译(XSLT是v2)但没有成功.我也尝试了http://geekswithblogs.net/Erik/archive/2008/04/01/120915.aspx上的string.replace方法,结果相同.
给出以下xml:
<inventory>
<item name="..." sku="123"/>
<item name="..." sku="not available"/>
<catalog vendor="...">
<product id="--not available--"/>
<product id="345"/>
</catalog
</inventory>
Run Code Online (Sandbox Code Playgroud)
我想替换其中"不可用"的任何属性值(任何地方)'000'.
我在XSLT中尝试了不同的组合(这不是我的强项),当我为每个属性添加特定的XPath表达式时,我能够替换它们.不幸的是,我可能正在处理的XML文档(形成良好的思想)可能具有不同的结构和属性命名约定.
所有重要的是扫描特定属性值(或值模式)并将其替换为特定于问题的默认值.我发现自己只是在Python中破解了一个解决方案(加载文档,迭代DOM并修改符合条件的任何节点中的任何属性.)
但我真的想在XSLT中学习这个解决方案(无论是替换匹配模式的属性值,还是直接字符串比较),如果存在的话.如果你愿意,可以有专业的好奇心.
任何帮助,将不胜感激.关于解释这些XLST/XPath复杂性的源或书的任何建议都会很棒(我只发现了非常简单的例子,没有任何像这样的任意.)
我有看起来像这样的XML:
<detail>
<address>
<line1/>
<line2/>
<line3/>
<postcode/>
</address>
</detail/>
Run Code Online (Sandbox Code Playgroud)
我可以选择任意数量的<line*>节点,而其他我不想选择的节点。
我已经尝试过了,但这似乎不起作用(无论如何在C#中):
/detail/address/[substring(name(),4) = 'line']
Run Code Online (Sandbox Code Playgroud)
铝,帮助赞赏!
我想在根节点关闭之前的XML文档末尾添加几个元素,并且我正在使用XSL进行转换。
源XML可以包含任何无关紧要的节点,子节点等。其中的所有内容都应复制到转换后的文档中,此外还必须添加一些其他元素。
我对XSL,XSLT和XPath完全陌生,所以我无疑是在犯错误。
我所有的XSL都是这样的:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" encoding="UTF-8" omit-xml-declaration="yes" />
<!-- tried directives -->
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
这是我发现并尝试过的,但是没有成功。
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
<my-el></my-el>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
我读过那是身份模板,所以我想用它来复制所有内容以及一个附加元素。但这会<my-el></my-el>在源文档的每个元素内添加。
在阅读了一些有关XSLT和XPath的w3schools教程之后,我尝试了:
<xsl:template match="/">
<xsl:copy-of select="."></xsl:copy-of>
<my-elem />
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
但是它<my-elem />在根元素的结束标记之后添加。
你能帮我吗?
背景:我正在玩,以xml-maven-plugin通过配置web.xml文件触发向Web应用程序文件中添加一些配置。我希望将文件中所有现有的XML复制到输出文档中,再加上一些(现在就足够了)。
这是源web.xml文件:
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<display-name>My Project</display-name>
<welcome-file-list>
index.jsp
</welcome-file-list>
</web-app>
Run Code Online (Sandbox Code Playgroud)
使用XML etree,可以执行以下操作:
etree.getpath(element
如何用HTML而不是XML来做同样的事情?
我正在使用HTMLAgilityPack来抓取一堆标签。有些分配了几个类别中的1个,有些则没有分类。是那些我不需要上课的人。
我知道,按班级获取一个节点,我们可以做类似的事情;
.SelectNodes("//table[@class=\"pagelinks\"]");
Run Code Online (Sandbox Code Playgroud)
同样,您可以选择忽略特定的类或ID。
.SelectNodes("//table[not(@class=\"pagelinks\")]");
Run Code Online (Sandbox Code Playgroud)
但是,有一种方法可以仅在&仅当它没有类时才抓住节点吗?
任何指针将不胜感激。
谢谢。
我正在使用LibXML解析一个简单的jhove输出.但是,我没有得到我期望的价值.这是代码:
use feature "say";
use XML::LibXML;
my $PRSR = XML::LibXML->new();
my $xs=<DATA>;
say $xs;
my $t1 = $PRSR->load_xml(string => $xs);
say "1:" . $t1->findvalue('//date');
$xs=<DATA>;
say $xs;
$t1 = $PRSR->load_xml(string => $xs);
say "2:" . $t1->findvalue('//date');
__DATA__
<jhove xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://hul.harvard.edu/ois/xml/ns/jhove" xsi:schemaLocation="http://hul.harvard.edu/ois/xml/ns/jhove http://hul.harvard.edu/ois/xml/xsd/jhove/1.3/jhove.xsd" name="Jhove" release="1.0 (beta 3)" date="2005-02-04"><date>2006-10-06T09:11:34+02:00</date></jhove>
<jhove><date>2006-10-06T09:11:34+02:00</date></jhove>
Run Code Online (Sandbox Code Playgroud)
如您所见,"1:"行返回一个空字符串,而"2:"返回预期日期.jhove-root-element中的什么使xpath查询无法正常工作?我甚至在XML-Spy中尝试过它,即使有完整的标题也可以.
编辑:当我从根元素中删除xmlns属性时,xpath查询工作.但那怎么可能呢?
我有一个XML文件,例如
<Bars1>
<Bar name='0'>245</Bar>
<Bar name='1'>180</Bar>
<Bar name='2'>120</Bar>
<Bar name='3'>60</Bar>
<Bar name='4'>0</Bar>
</Bars1>
<Bars2>
<Bar name='0'>25</Bar>
<Bar name='1'>10</Bar>
<Bar name='2'>10</Bar>
<Bar name='3'>6</Bar>
<Bar name='4'>0</Bar>
</Bars2>
<Gubbins3>
<Bar name='0'>45</Bar>
<Bar name='1'>18</Bar>
<Bar name='2'>12</Bar>
<Bar name='3'>4</Bar>
<Bar name='4'>0</Bar>
</Gubbins3>
Run Code Online (Sandbox Code Playgroud)
和一个List<int>notNeededBarNames,包含例如{1,3}
我已经将XML文件加载到XmlDocumentxmlDoc中,并且想要删除任何"Bar"元素,其中属性"name"是我列表中的整数之一,无论它在XML中可能存在于何处.我的例子很小,但实际上文档和列表可能非常大.
这样做有一个很好的方法吗?我可以"蛮力"它,但我不禁觉得可能有更好的方法.
希望你能帮忙!