有没有人知道从XPath表达式以编程方式创建XML层次结构的现有方法?
例如,如果我有一个XML片段,例如:
<feed>
<entry>
<data></data>
<content></content>
</entry>
</feed>
Run Code Online (Sandbox Code Playgroud)
给定XPath表达式/ feed/entry/content/@ source我会:
<feed>
<entry>
<data></data>
<content @source=""></content>
</entry>
</feed>
Run Code Online (Sandbox Code Playgroud)
我意识到使用XSLT是可能的,但由于我正在尝试完成的动态特性,固定转换将无法工作.
我在C#工作,但如果有人使用其他语言的解决方案,请加入.
谢谢您的帮助!
例子在
http://en.wikipedia.org/wiki/XSLT
要么
http://www.w3schools.com/xsl/tryxslt.asp?xmlfile=cdcatalog&xsltfile=cdcatalog
似乎是独立的XML和XSLT文件.他们不必联系吗?或者你以某种方式把它们放在同一个文件中?否则,一个文件如何知道如何从另一个文件中吸取数据?
我对建议/ 伪代码/解释而不是实际实现感兴趣.
如果节点没有属性,则get/generate String with value of its xpath
情况如果节点具有属性,则迭代通过属性列表并为包括节点的每个属性创建xpath.
忠告?希望你能提供一些有用的英特尔
编辑:
这样做的原因是..我正在用jmeter编写自动化测试,所以对于我需要验证请求实际完成其工作的每个请求,所以我通过使用xpath获取节点值来声明结果.(额外信息 - 不相关)
当请求很小时,手动创建断言并不是问题,但对于较大的请求,它真的很痛苦...(额外信息 - 不相关)
BOUNTY:
我正在寻找Java方法
目标
我的目标是从这个ex xml文件中实现以下目标:
<root>
<elemA>one</elemA>
<elemA attribute1='first' attribute2='second'>two</elemA>
<elemB>three</elemB>
<elemA>four</elemA>
<elemC>
<elemB>five</elemB>
</elemC>
</root>
Run Code Online (Sandbox Code Playgroud)
产生以下内容:
//root[1]/elemA[1]='one'
//root[1]/elemA[2]='two'
//root[1]/elemA[2][@attribute1='first']
//root[1]/elemA[2][@attribute2='second']
//root[1]/elemB[1]='three'
//root[1]/elemA[3]='four'
//root[1]/elemC[1]/elemB[1]='five'
Run Code Online (Sandbox Code Playgroud)
解释:
BOUNTY UPDATE:
我发现这个例子,它没有产生正确的结果,但我看起来像这样:
亚马逊推荐的在生产DynamoDB中更改大型表的架构的方法是什么?
想象一个假设的情况,我们有一个表Person,主哈希密钥SSN.该表可能包含1000万个项目.
现在的消息是,由于身份盗窃的关键数量,这个假设国家的政府引入了另一个个人身份:唯一个人身份识别码,即UPI.
我们必须添加一个UPI列并更改Person表的模式,以便现在主哈希键是UPI.我们想要支持使用SSN的当前系统和使用UPI的新系统的一段时间,因此我们需要这两个列在Person表中共存.
亚马逊推荐的这种架构更改方式是什么?
我想将分号(;)上的地址拆分为由<br />以下各项分隔的行:
例如if address= 123 Elm Street,我想输出123 Elm Street,
但如果address= 123 Elm Street;PO Box 222,我想输出
123 Elm Street<br />PO Box 222
Run Code Online (Sandbox Code Playgroud)
如果address= 123 Elm Street;PO Box 222;c/o James Jones,我想输出
123 Elm Street<br />PO Box 222<br />c/o James Jones
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?(可能很简单,但我不熟悉XSLT)
普通的XSL选择器是
<xsl:value-of select="address"/>
Run Code Online (Sandbox Code Playgroud)
我想修改这个XSLT片段以分号分割.
更新:显然,答案涉及使用<xsl:call-template>和功能substring-before()和substring-after().
但我是XSLT的初学者,我真的可以使用一些帮助来解决这个问题.
这是一个简单的问题,但我无法找到答案.我有一个XSLT 2.0样式表,我正在尝试用Java处理.它依赖于Saxon的XSL元素.
我当前的类在使用简单的XSLT 1.0时运行良好,但是我使用使用Saxon构建的2.0 XSLT会收到有关无法识别的元素的错误.
我无法弄清楚如何告诉Java使用Saxon作为处理器.我在班上使用javax.xml.transform.这是我可以设置的属性吗?我该怎么做呢?谢谢!
编辑 我想出如何设置属性使用Saxon,但现在我收到此错误.
Provider net.sf.saxon.TransformerFactoryImpl not found
Run Code Online (Sandbox Code Playgroud)
如何在我的应用程序中包含Saxon?
假设我有一个像这样的XML文档:
<books>
<book>1110</book>
<book>1111</book>
<book>1112</book>
<book>1113</book>
</books>
Run Code Online (Sandbox Code Playgroud)
我正在尝试设置一个条件来测试当前节点的值for-each,但是我做错了:
<xsl:for-each select="/books/book">
<xsl:if test=".[='1112']">
Success
</xsl:if>
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
我对xslt很新,发现它很简单或很复杂.我想澄清一些概念.什么是前兄弟和什么是祖先,从谷歌搜索后,我找到了祖先的解释.并且他们网站上的图表更容易理解.
但我仍然不明白兄弟姐妹
<product>
<inventory>
<drink>
<lemonade>
<price>$2.50</price>
<amount>20</amount>
</lemonade>
<pop>
<price>$1.50</price>
<amount>10</amount>
</pop>
</drink>
<service>
<address />
<phone />
<delivery> City </delivery>
</service>
<snack>
<chips>
<price>$4.50</price>
<amount>60</amount>
</chips>
</snack>
<hotfood></hotfood>
<totalprice> $15</totleprice>
</inventory>
</product>
Run Code Online (Sandbox Code Playgroud)
那我怎么读这个前兄弟:: pop/ancestor :: inventory/totalprice
祖先:: inventory/totalprice = product\inventory\totalprice previous-sibling :: pop - 我不明白这个如何一起阅读?
非常感谢