xml - 扁平化第 3 方 XML 提要?

标签 xml xslt

我正在尝试从第 3 方源获取 XML feed 并将其扁平化。

当前的 XML feed 类似于:

<properties>
    <property>
        <idnumber></idnumber>
        <location>
            <region></region>
            <street-address></street-address>
            <city-name></city-name>
            <state-code></state-code>
            <zipcode></zipcode>
            <latitude></latitude>
            <longitude></longitude>
        </location>
        <details>
            <name></name>
            <status></status>
            <price></price>
            <bedrooms></num-bedrooms>
            <bathrooms></bathrooms>
            <lot-size></lot-size>
            <square-feet></square-feet>
            <property-type></property-type>
            <attributes></attributes>
            <description></description>
        </details>
        <pictures>
            <picture>
                <picture-url></picture-url>
            </picture>
    </property>
</properties>

但是,我确实需要将 XML 扁平化为:

<properties>
    <property>
        <idnumber></idnumber>
        <region></region>
        <street-address></street-address>
        <city-name></city-name>
        <state-code></state-code>
        <zipcode></zipcode>
        <latitude></latitude>
        <longitude></longitude>
        <name></name>
        <status></status>
        <price></price>
        <bedrooms></num-bedrooms>
        <bathrooms></bathrooms>
        <lot-size></lot-size>
        <square-feet></square-feet>
        <property-type></property-type>
        <attributes></attributes>
        <description></description>
        <picture>
                <picture-url></picture-url>
        </picture>
    </property>
</properties>

我一直在阅读 XLST 样式表来尝试此操作,但是我只是在浪费时间,因为原始提要托管在我无法编辑的第 3 方上?

最佳答案

这会做你想要的。身份模板将所有内容复制到输出,而其他三个模板会导致省略二级标签,同时仍然复制其内容。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:output method="xml" indent="yes"/>

 <xsl:template match="@*|node()">
  <xsl:copy>
   <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
 </xsl:template>

 <xsl:template match="property/location">
  <xsl:apply-templates/>
 </xsl:template>

 <xsl:template match="property/details">
  <xsl:apply-templates/>
 </xsl:template>

 <xsl:template match="property/pictures">
  <xsl:apply-templates/>
 </xsl:template>

</xsl:stylesheet>

关于xml - 扁平化第 3 方 XML 提要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9609846/

相关文章:

java - 没有名称/前缀的 Jackson QName 序列化

python - lxml.etree : Start tag expected, '<' 未找到,第 1 行,第 1 列

c++ - 使用 -icu 构建 xerces

xslt - 在 XSLT 中将十六进制数转换为整数

xml - 有没有办法让 XSLT 回显支持它的 XML?

javascript - 无法将下拉值传递给 XSLT 参数

xslt - xsl中的条件语句

xslt - 如何使 xsl 转换缩进输出?

java - hadoop 中多种输入格式作为单一输入格式

python - 如何使用 Python 对大 XML 文件执行查询?