首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >XPATH获取子元素Typescript/Javascript

XPATH获取子元素Typescript/Javascript
EN

Stack Overflow用户
提问于 2018-09-23 19:03:15
回答 1查看 2K关注 0票数 1

我有这个XML:

代码语言:javascript
复制
<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的所有子值。我的输出应该是:

代码语言:javascript
复制
dl: {
  number: 1,
  ref: r54
},
dl {
  number: 1,
  ref: r67
},
dl {
  number: 1,
  ref: r89
},

我正在尝试这样做:

代码语言:javascript
复制
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;

	}

但是它不起作用,有什么建议吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-09-24 04:00:19

如果我理解正确的话,您正在尝试将XML段转换为JSON。

有许多XML to JSON库可用。

如果你坚持的话,

利用它们,例如x2js

代码语言:javascript
复制
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);
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/x2js/1.2.0/xml2json.js"></script>

PS:我用<root>标签包装了dl段,使其有效。一些需要牢记的东西,或者迭代各个片段。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52465472

复制
相关文章

相似问题

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