Xelement. XPathSelectElement

У меня есть следующая XPath-строка

"(//DEAL_SETS/DEAL_SET/DEALS/DEAL/PARTIES/PARTY[ROLES/ROLE/
    ROLE_DETAIL/PartyRoleType='Borrower'])  
        [(ROLES/PARTY_ROLE_IDENTIFIERS/PARTY_ROLE_IDENTIFIER/
            PartyRoleIdentifier='1' or position() = 1)]/ROLES/ROLE/BORROWER/
                RESIDENCES/RESIDENCE/ADDRESS/PostalCode[../../RESIDENCE_DETAIL/
                    BorrowerResidencyType='Current']"

которая работает, когда я ввожу ее в Altova XML Spy и дает мне результат.

Но когда я использую ее непосредственно как Xelement.XPathSelectElement(XPath), она не работает, но работает Xelement.XPathSelectElement(collective, nameSpaceManager), где collective - префикс пространства имен (скажем, "ns") плюс моя XPath-строка.

Но проблема в том, что я должен изменить строку XPath на что-то вроде этого

"(//ns:DEAL_SETS/ns:DEAL_SET/ns:DEALS/ns:DEAL/ns:PARTIES/ns:PARTY[ns:ROLES/
    ns:ROLE/ns:ROLE_DETAIL/ns:PartyRoleType='Borrower'])[(ns:ROLES/
        ns:PARTY_ROLE_IDENTIFIERS/ns:PARTY_ROLE_IDENTIFIER/
            ns:PartyRoleIdentifier='1' or position() = 1)]/ns:ROLES/
                ns:ROLE/ns:BORROWER/ns:RESIDENCES/ns:RESIDENCE/
                    ns:ADDRESS/ns:PostalCode[../../ns:RESIDENCE_DETAIL/
                        ns:BorrowerResidencyType='Current']"

Есть ли способ избежать необходимости помещать префикс пространства имен (ns:) в каждый узел.

Извините, что не выложил образец xml раньше, вы можете повторить тег Party и его элементы и заполнить ложными данными, PartyRoleType дает мне, что это за сторона, это может быть заемщик, оценщик и т.д. partyroleidentifier дает мне способ различать две стороны с одинаковыми partyroletypes, например, может быть 2 заемщика, partyroleidentifier различает их как 1 и 2

<?xml version="1.0" encoding="utf-8"?>
<MESSAGE xmlns="http://www.example.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xxxxReferenceModelIdentifier="3.0.0.263.12" xsi:schemaLocation="http://www.example.org/schemas C:\Subversion\xxx_3_0.xsd">
 <DEAL_SETS>
    <DEAL_SET>
      <DEALS>
        <DEAL>
          <PARTIES>
            <PARTY>
              <ROLES>
                <ROLE>
                  <PARTY_ROLE_IDENTIFIERS>
                     <PARTY_ROLE_IDENTIFIER>
                       <PartyRoleIdentifier>1</PartyRoleIdentifier>
                     </PARTY_ROLE_IDENTIFIER>
                  </PARTY_ROLE_IDENTIIERS>
                  <BORROWER>
                    <RESIDENCES>
                      <RESIDENCE>
                        <ADDRESS>
                        <PostalCode>56236</PostalCode>
                        </ADDRESS>
                      </RESIDENCE>
                    </RESIDENCES>
                  </BORROWER>
                  <ROLE_DETAIL>
                    <PartyRoleType>Borrower</PartyRoleType>
                  </ROLE_DETAIL>
                </ROLE>
              </ROLES>
            </PARTY>
          </PARTIES>
        </DEAL>
      </DEALS>
    </DEAL_SET>
  </DEAL_SETS>
</MESSAGE>
5
задан Kenster 4 September 2016 в 13:40
поделиться