XPATH获取子元素Typescript/Javascript [英] XPATH Get child elements Typescript/Javascript

查看:107
本文介绍了XPATH获取子元素Typescript/Javascript的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个XML:

<dl>
  <number>1</number>
  <ref>r54</ref>
</dl>
 
<dl>
  <number>2</number>
  <ref>r67</ref>
</dl>
  
<dl>
  <number>3</number>
  <ref>r89</ref>
</dl>

我需要将Dl存储在包含dl的所有子值的数组中.我的输出应为:

I need to store Dl in an array which contains all the child values of the dl. My output should be:

dl: {
  number: 1,
  ref: r54
},
dl {
  number: 1,
  ref: r67
},
dl {
  number: 1,
  ref: r89
},

我正在尝试执行以下操作:

I'm trying to do something like this:

public getArrayDl(xml: Document, xpath: string) {
		let array = [];
		let i = 0;
		let nodes = xml.evaluate(xpath, xml, null, XPathResult.ANY_TYPE, null);
		let result = nodes.iterateNext();
		while (result) {
			array[i] =  result.childNodes[0].nodeValue;
			result = nodes.iterateNext();
			i++;
		}
	
		return array;

	}

但这是行不通的,有什么建议吗?

But it is isn't working, any suggestions?

谢谢

推荐答案

如果我正确理解这一点,则您正在尝试将XML段转换为JSON.

If I understand this correctly, you are trying to convert XML segments to JSON.

有许多可用的XML到JSON库.

There are a number of XML to JSON libraries available.

充分利用它们,例如x2js

Make use of them, e.g. x2js

var xmlString  = `<root><dl><number>1</number><ref>r54</ref></dl><dl><number>2</number><ref>r67</ref></dl><dl><number>3</number><ref>r89</ref></dl></root>`;

var x2js = new X2JS();
//console.log(x2js.xml_str2json(xmlString));

var parser = new DOMParser();
var xmlDoc = parser.parseFromString(xmlString, "text/xml");

var arr = [];
let nodes = xmlDoc.evaluate("//*[dl]", xmlDoc, null, XPathResult.ANY_TYPE, null);
let result = nodes.iterateNext();
while (result) {
  arr.push(x2js.xml2json (result));
  result = nodes.iterateNext();
}

console.log(arr);

<script src="https://cdnjs.cloudflare.com/ajax/libs/x2js/1.2.0/xml2json.js"></script>

PS:我用< root> 标记包装了dl段,以使其成为有效的XML.要记住的事情,或在各个细分中进行迭代.

PS: I wrapped the dl segments with a <root> tag to make it valid XML. Something to keep in mind, or iterate over the individual segments.

这篇关于XPATH获取子元素Typescript/Javascript的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆