C ++ MSXML2 - удалить пространство имен из XML - PullRequest
1 голос
/ 20 февраля 2009

Мне нужен хороший способ, чтобы иметь возможность удалить все пространство имен из документа XML на C ++. В настоящее время документ загружен в класс MSXML2 :: IXMLDOMDocument2Ptr.

В настоящее время не вижу методов, которые могут это сделать

Спасибо

1 Ответ

1 голос
/ 20 февраля 2009

Нет способов сделать это напрямую, потому что пространство имен + local-name по сути является именем узла. Пространство имен не добавлено в свойство.

Вам потребуется заново создать документ с совершенно новыми узлами, но это проще сделать в XSLT:

<xsl:template match='*'>
  <xsl:element name='{local-name(.)}'>
    <xsl:apply-templates select='*|@*|text()'/>
  </xsl:element>
</xsl:template>

<xsl:template match='@*'>
  <xsl:attribute name='{local-name(.)}'>
    <xsl:value-of select='.'/>
  </xsl:attribute>
</xsl:template>

с шаблонными правилами по умолчанию для обработки текстовых узлов, это должно работать (но не проверено).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...