[PATCH] Use xmlNodeBufGetContent to get text data
Alistair Leslie-Hughes
leslie_alistair at hotmail.com
Thu Dec 18 04:21:42 CST 2008
---
dlls/msxml3/node.c | 32 ++++++++++++--------------------
1 files changed, 12 insertions(+), 20 deletions(-)
diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c
index 3169f35..a1dffbb 100644
--- a/dlls/msxml3/node.c
+++ b/dlls/msxml3/node.c
@@ -864,32 +864,24 @@ static HRESULT WINAPI xmlnode_get_text(
{
xmlnode *This = impl_from_IXMLDOMNode( iface );
BSTR str = NULL;
+ xmlBufferPtr pXmlBuf;
+ int success;
- TRACE("%p\n", This);
+ TRACE("%p type %d\n", This, This->node->type);
if ( !text )
return E_INVALIDARG;
- switch(This->node->type)
- {
- case XML_ELEMENT_NODE:
- case XML_ATTRIBUTE_NODE:
+ pXmlBuf = xmlBufferCreate();
+ if(pXmlBuf)
{
- xmlNodePtr child = This->node->children;
- if ( child && child->type == XML_TEXT_NODE )
- str = bstr_from_xmlChar( child->content );
- break;
- }
-
- case XML_TEXT_NODE:
- case XML_CDATA_SECTION_NODE:
- case XML_PI_NODE:
- case XML_COMMENT_NODE:
- str = bstr_from_xmlChar( This->node->content );
- break;
-
- default:
- FIXME("Unhandled node type %d\n", This->node->type);
+ success = xmlNodeBufGetContent(pXmlBuf, (xmlNodePtr)This->node);
+ if(success == 0)
+ {
+ const xmlChar *pContent = xmlBufferContent(pXmlBuf);
+ str = bstr_from_xmlChar(pContent);
+ }
+ xmlBufferFree(pXmlBuf);
}
/* Always return a string. */
--
1.5.4.3
--------------070502020309040909040600--
More information about the wine-patches
mailing list