通过XPath提取属性节点的值
如何通过XPath提取属性节点的值?
一个示例XML文件是:
<parents name='Parents'> <Parent id='1' name='Parent_1'> <Children name='Children'> <child name='Child_2' id='2'>child2_Parent_1</child> <child name='Child_4' id='4'>child4_Parent_1</child> <child name='Child_1' id='3'>child1_Parent_1</child> <child name='Child_3' id='1'>child3_Parent_1</child> </Children> </Parent> <Parent id='2' name='Parent_2'> <Children name='Children'> <child name='Child_1' id='8'>child1_parent2</child> <child name='Child_2' id='7'>child2_parent2</child> <child name='Child_4' id='6'>child4_parent2</child> <child name='Child_3' id='5'>child3_parent2</child> </Children> </Parent> </parents>
到目前为止,我有这个XPathstring:
//Parent[@id='1']/Children/child[@name]
它只返回child
元素,但是我想拥有name
属性的值。
对于我的示例XML文件,下面是我想要的输出:
Child_2 Child_4 Child_1 Child_3
//Parent[@id='1']/Children/child/@name
您的原始child[@name]
表示具有属性name
的元素child
元素。 你想要child/@name
。
要获取值(不带属性名称),请使用string()
:
string( //Parent[@id='1']/Children/child/@name )
你应该使用//Parent[@id='1']/Children/child/data(@name)
属性不能被序列化,所以你不能以xml的结果返回它们。 你需要做的是使用data()函数从属性中获取数据。
如上所述回答:
//Parent[@id='1']/Children/child/@name
将仅输出属于由谓词[@ id = 1]指定的Parent
节点的4 child
节点的name
属性。 然后,您需要将谓词更改为[@id=2]
以获取下一个Parent
的child
节点集。
但是,如果完全忽略Parent
节点并使用:
//child/@name
您可以一次select所有child
节点的name
属性。
name="Child_2" name="Child_4" name="Child_1" name="Child_3" name="Child_1" name="Child_2" name="Child_4" name="Child_3"
//Parent/Children[@ Attribute='value']/@Attribute
这是可以使用的情况下,元素是有2个属性,我们可以得到另一个帮助一个属性。
@ryenus,你需要循环的结果。 这是我怎么做的VBScript;
Set xmlDoc = CreateObject("Msxml2.DOMDocument") xmlDoc.setProperty "SelectionLanguage", "XPath" xmlDoc.load("kids.xml") 'Remove the id=1 attribute on Parent to return all child names for all Parent nodes For Each c In xmlDoc.selectNodes ("//Parent[@id='1']/Children/child/@name") Wscript.Echo c.text Next
- XPath只返回包含文本的元素,而不返回其父项
- android sdk main.out.xmlparsing错误?
- Android NumberPicker:从XML中设置min,max,default
- 如何使用XPath包含()在这里?
- SimpleXMLElement在addChild和addAttribute中处理文本值的基本原理
- 更改导航抽屉中菜单项的文本颜色
- XMLHttpRequest原始空值不允许Access-Control-Allow-Origin用于file:///到file:///(无服务器)
- android.content.res.Resources $ NotFoundException:string资源ID#0x0
- 如何在XML属性值中使用双引号?