简体   繁体   English

如何通过abap中的XSLT程序读取XML文件的属性

[英]how to read attributes of XML file via XSLT program in abap

I have an XML file as below and i need to read attribute values and fetch it to an internal table. 我有一个如下的XML文件,我需要读取属性值并将其提取到内部表中。

but the values are not fetched and the internal table remains empty. 但不会获取值,并且内部表仍为空。 Please let me know if there is anything wrong with the code . 如果代码有问题,请告诉我。 Thank you so much in advance! 提前非常感谢您!

XML file : XML档案:

 <?xml version="1.0" encoding="iso-8859-1" ?>
    <CUSTOMERS>
      <PERSON customer_id="1" first_name="Jan" last_name="krohn">
      </PERSON>
      <PERSON customer_id="2" first_name="Jan1" last_name="krohn1">
      </PERSON>
    </CUSTOMERS>

xslt program : xslt程序:

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
 <xsl:output encoding="iso-8859-1" indent="yes" method="xml" version="1.0"/>
 <xsl:strip-space elements="*"/>
 <xsl:template match="/">
 <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
 <asx:values>
 <IPERSON>
 <xsl:for-each select="/CUSTOMERS/PERSON">
 <item>
 <CUST_ID>
 <xsl:value-of select="@customer_id"/>
 </CUST_ID>
 <FIRSTNAME>
 <xsl:value-of select="first_name"/>
 </FIRSTNAME>
 <LASTNAME>
 <xsl:value-of select="last_name"/>
 </LASTNAME>
 </item>
 </xsl:for-each>
 </IPERSON></asx:values>
 </asx:abap>
 </xsl:template>
</xsl:transform>

abap call : abap电话:

TYPES: BEGIN OF ts_person,
 cust_id(4) TYPE c,
 firstname(20) TYPE c,
 lastname(20) TYPE c,
* ONE_STRING TYPE CHAR50,
 END OF ts_person.

DATA : it_data TYPE STANDARD TABLE OF ts_person,
 wa_data TYPE ts_person.

DATA: gt_result_xml TYPE abap_trans_resbind_tab,
 gs_result_xml TYPE abap_trans_resbind.

GET REFERENCE OF it_data INTO gs_result_xml-value.
gs_result_xml-name = 'IPERSON'.
APPEND gs_result_xml TO gt_result_xml.

CALL TRANSFORMATION ZXSLT_1   " xslt file above
SOURCE XML it_xml
RESULT (gt_result_xml).

You missing @ sign for name of attributes first_name and last_name 您缺少@符号作为属性first_namelast_name名称

<xsl:for-each select="/CUSTOMERS/PERSON">
  <item>
    <CUST_ID>
      <xsl:value-of select="@customer_id" />
    </CUST_ID>
    <FIRSTNAME>
      <xsl:value-of select="@first_name" />
    </FIRSTNAME>
    <LASTNAME>
      <xsl:value-of select="@last_name" />
    </LASTNAME>
  </item>
</xsl:for-each>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM