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

用户5072412

我正在尝试使用节点包 XPATH 和 XMLDOM 选择 XML 文档的某些部分,但我没有通过元素值获得任何信息。猜测可能是我的 XPATH 定义,但老实说我不知道​​。

我的 XML 的顶部如下所示:

<?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"

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

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);

第一个测试生成了预期的结果,但我收到了“测试 2”的错误。我错过了明显的吗?

谢谢。

zx485

您只是忘记了xmlns="..."在元素上定义的命名空间会继承到子节点。
因此xmlns="http://www.cdisc.org/ns/odm/v1.3",您的 XML 中的这一行使所有子代都拥有这个 (an ODM) 命名空间。

//ODM:Study/ODM:GlobalVariables/ODM:StudyName

把它放在整个表达式中

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用XMLDOM修改XML文件

来自分类Dev

使用XPath读取大型XML文件

来自分类Dev

在Node.js中读取XML文件

来自分类Dev

使用node.js读取Excel文件

来自分类Dev

无法使用Node.js读取文件

来自分类Dev

使用Node.js读取文件

来自分类Dev

无法使用Node.js读取文件

来自分类Dev

使用node.js读取文件

来自分类Dev

如何通过node.js中的XPath用xmldom更改DOM?

来自分类Dev

从node.js中的URL读取XML文件:编码问题

来自分类Dev

使用Node.JS编辑XML文件

来自分类Dev

使用 xmldom 或 etree 使用 python 解析 XML

来自分类Dev

Node.js使用fs.readFileSync读取大文件

来自分类Dev

使用Node.js读取文件“无效编码”错误

来自分类Dev

如何使用node.js从网络同步读取文件

来自分类Dev

无法使用fs Node.js读取文件

来自分类Dev

如何使用Node.js读取.pdf文件的内容?

来自分类Dev

使用xpath查询Java读取xml

来自分类Dev

使用XPath查询读取xml中的节点

来自分类Dev

使用XPATH读取棘手的XML

来自分类Dev

使用oracle形式的Xpath读取并显示html(xml)文件中的元素

来自分类Dev

使用MSBuild读取XML文件

来自分类Dev

使用LINQ从XML文件读取

来自分类Dev

使用MSBuild读取XML文件

来自分类Dev

使用Perl读取XML文件

来自分类Dev

使用LINQ从XML文件读取

来自分类Dev

使用 Petl 读取 XML 文件

来自分类Dev

如何使用Node.js从json文件读取数据并将读取的数据显示为html?

来自分类Dev

在 node.js 中读取大量文件和 xml 到 json