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>
от него