1
考虑以下三条XML的:通过查找元素名称区分大小写的搜索
<?xml version="1.0" encoding="utf-8"?>
<root>
<body>
<customerSearchRequest>
<id>1234</id>
</customerSearchRequest>
</body>
</root>
<?xml version="1.0" encoding="utf-8"?>
<root>
<BODY>
<userSearchRequest>
<id>5678</id>
</userSearchRequest>
</BODY>
</root>
<?xml version="1.0" encoding="utf-8"?>
<root>
<Body>
<orderSearchRequest>
<id>9101</id>
</orderSearchRequest>
</Body>
</root>
我需要提取的body
(即customerSearchRequest
,userSearchRequest
和orderSearchRequest
)第一孩子的名字,这是我我目前做如下:
name(//SOAP-ENV:body/*[1])
的问题是,这只适用于作为body
第一个请求是区分大小写的。如何使路径不区分大小写?
感谢您的指点。
正确的答案,但也要注意OP应该考虑推回负责XML的团队,以便在单个案例约定上标准化,因为'body','BODY'和'Body'实际上是三个不同的元素。 – kjhughes
我使用logstash,它使用Nokogiri,它不支持XPath 2,所以我最终的解决方案是'local-name(// * [translate(local-name(),'BODY','body')='体']/* [1])' –