2015-10-15 3 views
3

Не удалось получить желаемый результат ... возможно, это невозможно, но я новичок в селекторах 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; 
+0

Вспомнил, что нашел следующее - но никто не помог мне: 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

+0

Вы используете SAS для импорта через xmlmap? Какая версия SAS? – Joe

+0

Да! Я использую SAS 9.2. – xxsoundgirlxx

ответ

3

я понял это ...

В моей таблице пути мне нужно, чтобы добраться до линии уровень, на котором я хочу новое наблюдение (строка), чтобы начать, как:

<TABLE name="AUDIT"> 
     <TABLE-PATH syntax="XPath"> 
      /submission/component/audit/measures/measure/data-elements/data-element 
     </TABLE-PATH> 

это теперь будет выбрать все данные-элементы, которые я хочу.

+0

Да, это звучит точно так же, как проблема! – Joe

+0

спасибо, что посмотрели joe! – xxsoundgirlxx

Смежные вопросы