XML-доступ к дочернему внутреннему тексту

У меня есть этот XML:

<location>
  <character name="name" mask="pap.png" X="397" Y="60">
    <look reaction="False">
      text1
      <answer>text2</answer>
    </look>
    <talk xml=""/>
  </character>
</location>

и у меня есть доступ к узлу. У меня есть проблемы с изменением text1 и text2, Вот мой код:

node.ChildNodes[0].InnerText = "new_text1";
node.ChildNodes[0].ChildNodes[0].InnerText = "new_text2"; //this doesn't work

после этого мой XML выглядит так:

<location>
  <character name="name" mask="pap.png" X="397" Y="60">
    <look reaction="False">text1</look>
    <talk xml=""/>
  </character>
</location>

так что отрезал <answer/> ребенок. Есть идеи?

2 ответа

Решение

Вы должны изменить InnerXml, потому что ваш XML имеет смешанный сложный тип (комплексный тип = смешанный: элемент xml может содержать атрибуты, элементы и текст), и DOM не знает об этом полностью. Ваш код может быть таким:

node.ChildNodes[0].InnerXml = "new_text1 <answer>new_text2</answer>";

Если это линия node.ChildNodes[0].InnerText = "new_text1";

что заменить

<look reaction="False">
      text1
      <answer>text2</answer>
    </look>

тогда вы уже заменили тег <answer>text2</answer> от него

Другие вопросы по тегам