首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用node.js xpath xmldom读取XML文件

使用node.js xpath xmldom读取XML文件
EN

Stack Overflow用户
提问于 2018-05-05 15:56:18
回答 1查看 3.7K关注 0票数 0

我正在尝试使用节点包XPATH & XMLDOM来选择XML文档的某些部分,但是对于元素值,我什么也没有完成。据猜测,这可能是我的XPATH定义,但老实说,我不知道。

我的XML的顶部如下所示:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="define2-0-0.xsl"?>
<ODM
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.cdisc.org/ns/odm/v1.3"
xmlns:def="http://www.cdisc.org/ns/def/v2.0"
ODMVersion="1.3.2"
FileType="Snapshot"
FileOID="StudyNum.ADaM-IG.1.0"
CreationDateTime="2018-02-08T09:40:51">
<Study OID="StudyNum.ADaM-IG.1.0">
<GlobalVariables>
<StudyName>StudyNum</StudyName>
<StudyDescription>Study Description</StudyDescription>
<ProtocolName>StudyName_PRCL_StudyNum</ProtocolName>
</GlobalVariables>
<MetaDataVersion OID="MDV.StudyNum.ADaM-IG.1.0" Name="Study StudyNum Data Definitions"
Description="Awful Syndrome"
def:DefineVersion="2.0.0"

目前为止,我的代码如下所示:

代码语言:javascript
运行
复制
var xpath = require('xpath'),
    dom   = require('xmldom').DOMParser,
    fs = require('fs');

var xml = fs.readFileSync('./Define/define.xml', 'utf8').toString();
var select = xpath.useNamespaces({"xlink":"http://www.w3.org/1999/xlink", "ODM":"http://www.cdisc.org/ns/odm/v1.3", "def":"http://www.cdisc.org/ns/def/v2.0"});
var doc = new dom().parseFromString(xml)

console.log("test 1 : " + select('//ODM:Study/@OID', doc)[0].nodeValue);
console.log("test 2 : " + select('//ODM:Study/GlobalVariables/StudyName/', doc)[0].nodeValue);

第一个测试生成预期的结果,但我只得到一个错误的'test 2‘。我错过了显而易见的事情吗?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-05 17:27:09

您只是忘记了在元素上使用xmlns="..."定义的命名空间是继承到子节点的。

因此,您的XML中的行xmlns="http://www.cdisc.org/ns/odm/v1.3"使所有子类都具有这个( ODM)命名空间。

代码语言:javascript
运行
复制
//ODM:Study/ODM:GlobalVariables/ODM:StudyName

把它放在整个表达中它是

代码语言:javascript
运行
复制
console.log("test 2 : " + select('//ODM:Study/ODM:GlobalVariables/ODM:StudyName', doc)[0].nodeValue);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50191341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档