我有一个简单的要求,我需要获取属性
xml:id
的值,即 af1
。
我正在使用 SAXParser
,这是我的 xpath:a/aff/@xml:id
相反,我能够获取使用 xpath:a/aff/@value
的价值。
但是我无法检索该值,你能帮我吗?
<?xml version="1.0" encoding="UTF-8" ?>
<a>
<aff xml:id="af1" value="a">
<uAff>
Hello
</uAff>
</aff>
<aff xml:id="corr1">
<uAff>
Hello1
</uAff>
</aff>
</a>
提前致谢。
要获取可以使用的属性的值:
/a/aff/@*[name()='xml:id']
/a/aff/@xml:id 在获取值方面效果很好...
您是否想同时获取这两个值?
如果您只想获取第一个值,您可以使用 /a/aff[1]/@xml:id
@tibtof 的解决方案适用于我复杂的 Cordova config.xml 转换,使用 gulp 和 gulp-xml-transformer 通过定位
android:host
属性来修复 ionic-plugin-deeplinks AndroidManifest.xml 实现,因为属性名称中的冒号将不适用于 path: '//xmlns:platform[@name="android"]/xmlns:config-file/xmlns:intent-filter/xmlns:data[@android:host]'
:
gulpfile.js:
var gulp = require('gulp'),
xeditor = require("gulp-xml-transformer");
function config(avc, bundleId, ioscfbv, version, appLabel, hostname, done) {
.pipe(xeditor([
{
path: '//xmlns:widget',
attr: { 'android-versionCode': avc, 'id': bundleId, 'ios-CFBundleVersion': ioscfbv, 'version': version }
},
{
path: '//xmlns:name',
text: appLabel
},
{
path: '//*[@name="Hostname"]',
attr: { 'value': bundleId }
},
{
path: '//*[@name="ios"]/xmlns:config-file/xmlns:array/xmlns:string',
text: 'applinks:' + hostname
},
{
path: '//xmlns:platform[@name="android"]/xmlns:config-file/xmlns:intent-filter/xmlns:data[@*[name()="android:host"]]',
attr: { 'android:host': hostname }
}
], 'http://www.w3.org/ns/widgets'))
.pipe(gulp.dest('.'))
.on('finish', done);
}
配置.xml:
<widget xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0" android-versionCode="0" id="com.bundle.placeholder" ios-CFBundleVersion="1.0.0.0" version="1.0.0">
...
<platform name="android">
...
<config-file target="AndroidManifest.xml" parent="/manifest/application/activity">
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="https"/>
<data android:host="ehi.evclear.dev"/>
</intent-filter>
</config-file>
...
</platform>
...
</widget>