Получение и установка XML-элементов с пространствами имен

ВОПРОС ДЛЯ НОВИЧКА.

Я не так уж много работал с xml, во всяком случае, ничего подобного. У меня есть XML, как показано ниже, который я получаю, который имеет несколько пространств имен.

Мне нужно прочитать некоторые значения, а затем обновить другие, прежде чем возвращать исправленный XML с неповрежденными пространствами имен - не хочу, чтобы они удалялись.

Мне дан путь к некоторым из таких элементов, как этот cred/sub/aa или trip/items/item[0]/customerInfo/custName.

Но кажется, что пространства имен так просто затрудняют доступ к этим элементам.

Кто-нибудь знает, как я могу прочитать некоторые значения вроде NON-SMOKING из custPref или получить значение CABBAGE из bossman/zz.

Кроме того, я хочу иметь возможность установить такое значение, как custName, чтобы сказать Mr. X.

Любые идеи?

Спасибо.

<?xml version="1.0" encoding="utf-16" ?> 
<A1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <cred xmlns="https://blah-blah.com/?foobar">
        <sub>
            <aa>Zippo</aa> 
            <bb>lighter</bb> 
        </sub>
        <reqId>
            <cc></cc> 
            <dateOfBirth></dateOfBirth> 
        </reqId>
    </cred>
    <reqName xmlns="http://blah-blah/vader/base">qwerty</reqName> 
    <reqId xmlns="http://blah-blah/vader/base">12345</reqId> 
    <machine xmlns="http://blah-blah/vader/base">
        <qqq>hello</qqq> 
        <www>goodbye</www> 
        <eee>99999</eee> 
        <rrr>88888</rrr> 
    </machine>
    <monkey xmlns="http://blah-blah/vader/base">alskdjfhg</monkey> 
    <math xmlns="http://blah-blah/vader/base">
        <language></language> 
    </math>
    <trip xmlns="http://blah-blah/simple">
        <tripOverview xmlns="http://blah-blah/vader/base">
            <description></description> 
            <cost></cost> 
        </tripOverview>
        <bossman xmlns="http://blah-blah/vader/base">
            <zz>CABBAGE</zz> 
            <yy>BANANA</yy> 
            <xx>MELON</xx> 
            <ww>SYRUP</ww> 
        </bossman>
        <items>
            <item>
                <itemSummary xmlns="http://blah-blah/vader/base">
                    <description></description> 
                    <cost></cost> 
                    <reference></reference> 
                </itemSummary>
                <customerInfo xmlns="http://blah-blah/vader/base">
                    <custName></custName> 
                    <custPref>NON-SMOKING</custPref>
                </customerInfo>
                <seatId xmlns="http://blah-blah/vader/base">1</seatId> 
            </item>
        </items>
    </trip>
  </A1>

person Kai_B    schedule 25.11.2014    source источник


Ответы (1)


person    schedule
comment
Спасибо, Кэлвин, это очень помогло, я использовал ваш код выше, но просто добавил свойство LocalName, т.е. XElement xElement = xDocument.Descendants().Where(q => q.Name.LocalName == elementName).FirstOrDefault(); - person Kai_B; 26.11.2014