2009-02-20 13 views
1

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

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

Благодарности

ответ

1

Там нет методов, чтобы сделать это непосредственно, так как имя локального пространства имен + неотъемлемо имя узла. Пространство имен не добавлено в свойство.

Вам нужно будет воссоздать документ с совершенно новыми узлами, но это может быть сделано в 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> 

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

Смежные вопросы