Не удалось получить желаемый результат ... возможно, это невозможно, но я новичок в селекторах XPath.xpath: выберите несколько атрибутов дочерних элементов из xml
У меня есть XML, как:
<submission>
<component type="X">
<audit>
<measures>
<measure id="xyz">
<reported>false</reported>
<benefit>false</benefit>
<data-elements>
<data-element id="rate1">
<reportable>false</reportable>
<comment/>
</data-element>
<data-element id="rate2">
<reportable>false</reportable>
<comment/>
</data-element>
<data-element id="rate3">
<reportable>false</reportable>
<comment/>
</data-element>
<data-element id="rate4">
<reportable>false</reportable>
<comment/>
</data-element>
</data-elements>
</measure>
<measure id="abc">
<reported>false</reported>
<benefit>false</benefit>
<data-elements>
<data-element id="rate5">
<reportable>false</reportable>
<comment/>
</data-element>
<data-element id="rate6">
<reportable>false</reportable>
<comment/>
</data-element>
<data-element id="rate7">
<reportable>false</reportable>
<comment/>
</data-element>
<data-element id="rate8">
<reportable>false</reportable>
<comment/>
</data-element>
</data-elements>
</measure>
</measures>
</audit>
</component>
</submission>
Я пытаюсь получить доступ к атрибутам с XPath селекторов с использованием XMLMAP так:
<?xml version="1.0" ?>
<SXLEMAP version="1.2">
<TABLE name="AUDIT">
<TABLE-PATH syntax="XPath">
/submission/component/audit/measures/measure
</TABLE-PATH>
<COLUMN name="MEASURE" retain="YES">
<PATH syntax="XPath">
/submission/component/audit/measures/[email protected]
</PATH>
<TYPE>character</TYPE>
<DATATYPE>STRING</DATATYPE>
<LENGTH>30</LENGTH>
</COLUMN>
<COLUMN name="RATES">
<PATH syntax="XPath">
//submission/component/audit/measures/measure/data-elements/data-element/@id
</PATH>
<TYPE>character</TYPE>
<DATATYPE>STRING</DATATYPE>
<LENGTH>20</LENGTH>
</COLUMN>
<COLUMN name="REPORT">
<PATH syntax="XPath">
/submission/component/audit/measures/measure/data-elements/data-element/reportable
</PATH>
<TYPE>character</TYPE>
<DATATYPE>STRING</DATATYPE>
<LENGTH>20</LENGTH>
</COLUMN>
Мой выход выглядит так:
MEASURE RATES REPORT
xyz rate4 false
abc rate8 false
Я хочу, чтобы мой выход, чтобы получить все ставки, а не только последний курс, как:
MEASURE RATES REPORT
xyz rate1 false
xyz rate2 false
xyz rate3 false
xyz rate4 false
abc rate5 false
abc rate6 false
abc rate7 false
abc rate8 false
Возможно ли это с помощью XMLMAP или мне нужно сделать что-то еще?
Заранее благодарим за ввод!
**** редактировать ***************************************** ******;
Вот основная программа SAS, которая тянет XML в и выводит результат:
* set destination for output *;
LIBNAME DATA '<filepath>';
* set location of xml document and xml_map *;
LIBNAME XFILE XML '<filepath>\stack_example.xml'
XMLMAP='<filepath>\stack_import_map.xml';
* check import *;
PROC PRINT DATA= XFILE.AUDIT;
RUN;
Вспомнил, что нашел следующее - но никто не помог мне: http://stackoverflow.com/questions/1457638/xpath-get-nodes-where-child-node-contains-an-attribute ---- https : //stackoverflow.com/questions/33096435/xpath-selecting-multiple-nodes ---- https://stackoverflow.com/questions/26320082/how-to-select-multiple-nodes-from-xml-with- xpath – xxsoundgirlxx
Вы используете SAS для импорта через xmlmap? Какая версия SAS? – Joe
Да! Я использую SAS 9.2. – xxsoundgirlxx