在 Node 中如何从 xml 中提取数据?
In Node how to extract data from xml?
我正在使用 libxmljs2
我有这个 XML:
<Document xmlns="http://hl7.org/fhir">...
<address>
<type value="both" />
<line value="Avenue 123">
<extension url="http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber">
<valueString value="123" />
</extension>
<extension url="http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName">
<valueString value="Avenue" />
</extension>
</line>
<city value="Amsterdam" />
<postalCode value="10623" />
</address>
在 address
中,我可以像这样提取 行 值:
NAME_SPACE = { ns: 'http://hl7.org/fhir' }
const myAddress = doc.get('//ns:Address/ns:line', NAME_SPACE) // Avenue 123
但是如何单独提取扩展名 valueStrings
?
类似于:
const houseNumber =
const streetName =
您只需遍历将父 extension
url 组件映射到其项目值的 valueString
项目:
const NAME_SPACE = { ns: 'http://hl7.org/fhir' }
const myAddress = doc.get('//ns:Address/ns:line', NAME_SPACE)
const addressDetails = {}
myAddress.forEach(node => {
const parentExtensionUrl = node.parent().attr('url').value();
const addressDetailsItemName = parentExtensionUrl.substring(parentExtensionUrl.lastIndexOf('-') + 1);
addressDetails[addressDetailsItemName] = node.attr('value').value()
});
我不了解 Node,但看起来您可以使用 xpath 查询从 xml 中提取值。在 xpath 中,您可以按属性过滤节点。
例如房号:
//ns:Address/ns:line/ns:extension[@url='http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber']/ns:valueString/@value
我正在使用 libxmljs2
我有这个 XML:
<Document xmlns="http://hl7.org/fhir">...
<address>
<type value="both" />
<line value="Avenue 123">
<extension url="http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber">
<valueString value="123" />
</extension>
<extension url="http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName">
<valueString value="Avenue" />
</extension>
</line>
<city value="Amsterdam" />
<postalCode value="10623" />
</address>
在 address
中,我可以像这样提取 行 值:
NAME_SPACE = { ns: 'http://hl7.org/fhir' }
const myAddress = doc.get('//ns:Address/ns:line', NAME_SPACE) // Avenue 123
但是如何单独提取扩展名 valueStrings
?
类似于:
const houseNumber =
const streetName =
您只需遍历将父 extension
url 组件映射到其项目值的 valueString
项目:
const NAME_SPACE = { ns: 'http://hl7.org/fhir' }
const myAddress = doc.get('//ns:Address/ns:line', NAME_SPACE)
const addressDetails = {}
myAddress.forEach(node => {
const parentExtensionUrl = node.parent().attr('url').value();
const addressDetailsItemName = parentExtensionUrl.substring(parentExtensionUrl.lastIndexOf('-') + 1);
addressDetails[addressDetailsItemName] = node.attr('value').value()
});
我不了解 Node,但看起来您可以使用 xpath 查询从 xml 中提取值。在 xpath 中,您可以按属性过滤节点。
例如房号:
//ns:Address/ns:line/ns:extension[@url='http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber']/ns:valueString/@value