如何遍历如下的XML?

人生无回头路 2009-06-30 11:28:14
<?xml version="1.0"?>
<StarEntity>
<Name>太阳</Name>
<nipAngle>0</nipAngle>
<Revolution>0</Revolution>
<Rotation>0</Rotation>
<Radius>1723</Radius>
<Distance>0</Distance>
<OrbitAnagle>0</OrbitAnagle>
<Way>1</Way>
<ListStar>
<StarEntity>
<Name>地球</Name>
<nipAngle>0</nipAngle>
<Revolution>365</Revolution>
<Rotation>1</Rotation>
<Radius>234</Radius>
<Distance>8789</Distance>
<OrbitAnagle>34</OrbitAnagle>
<Way>1</Way>
<ListStar>
<StarEntity>
<Name>月亮</Name>
<nipAngle>0</nipAngle>
<Revolution>30</Revolution>
<Rotation>3</Rotation>
<Radius>453</Radius>
<Distance>23</Distance>
<OrbitAnagle>34</OrbitAnagle>
<Way>1</Way>
</StarEntity>
</ListStar>
</StarEntity>
<StarEntity>
<Name>火星</Name>
<nipAngle>0</nipAngle>
<Revolution>459</Revolution>
<Rotation>32</Rotation>
<Radius>6578</Radius>
<Distance>5467889</Distance>
<OrbitAnagle>0</OrbitAnagle>
<Way>1</Way>
</StarEntity>
</ListStar>
</StarEntity>
打算用MS XML,请问各位高手如何搞作呢?谢谢。
...全文
58 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
春天的气息 2009-07-05
  • 打赏
  • 举报
回复

看一下完整的实例吧
http://www.bbs180.com/topictag-34.aspx
hzy694358 2009-07-05
  • 打赏
  • 举报
回复
用MSXML,具体的如9楼的代码所示,自己根据需要加以修改即可
人生无回头路 2009-06-30
  • 打赏
  • 举报
回复
我发在VC的地方,就是想用VC++啊.怎么来个FLASH??大哥.
yanlong521521 2009-06-30
  • 打赏
  • 举报
回复
参考
http://www2.flash8.net/teach/5357.htm
真相重于对错 2009-06-30
  • 打赏
  • 举报
回复
怎么不能遍历
IXMLDocument 有 childNodes ,循环读取

还有 SelectNodes方法,通过xpath 查询


人生无回头路 2009-06-30
  • 打赏
  • 举报
回复
没有遍历,没有多层查询.没法用啊.
真相重于对错 2009-06-30
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <windows.h>
#import <msxml3.dll> raw_interfaces_only
using namespace MSXML2;

// Macro that calls a COM method returning HRESULT value:
#define HRCALL(a, errmsg) \
do { \
hr = (a); \
if (FAILED(hr)) { \
dprintf( "%s:%d HRCALL Failed: %s\n 0x%.8x = %s\n", \
__FILE__, __LINE__, errmsg, hr, #a ); \
goto clean; \
} \
} while (0)

// Helper function that put output in stdout and debug window
// in Visual Studio:
void dprintf( char * format, ...)
{
static char buf[1024];
va_list args;
va_start( args, format );
vsprintf( buf, format, args );
va_end( args);
OutputDebugStringA( buf);
printf("%s", buf);
}

// Helper function to create a DOM instance:
IXMLDOMDocument * DomFromCOM()
{
HRESULT hr;
IXMLDOMDocument *pxmldoc = NULL;

HRCALL( CoCreateInstance(__uuidof(DOMDocument30),
NULL,
CLSCTX_INPROC_SERVER,
__uuidof(IXMLDOMDocument),
(void**)&pxmldoc),
"Create a new DOMDocument");

HRCALL( pxmldoc->put_async(VARIANT_FALSE),
"should never fail");
HRCALL( pxmldoc->put_validateOnParse(VARIANT_FALSE),
"should never fail");
HRCALL( pxmldoc->put_resolveExternals(VARIANT_FALSE),
"should never fail");

return pxmldoc;
clean:
if (pxmldoc)
{
pxmldoc->Release();
}
return NULL;
}


int main(int argc, char* argv[])
{
IXMLDOMDocument *pXMLDom=NULL;
IXMLDOMParseError *pXMLErr=NULL;
BSTR bstr = NULL;
VARIANT_BOOL status;
VARIANT var;
HRESULT hr;

CoInitialize(NULL);

pXMLDom = DomFromCOM();
if (!pXMLDom) goto clean;

VariantInit(&var);
V_BSTR(&var) = SysAllocString(L"stocks.xml");
V_VT(&var) = VT_BSTR;
HRCALL(pXMLDom->load(var, &status), "");

if (status!=VARIANT_TRUE) {
HRCALL(pXMLDom->get_parseError(&pXMLErr),"");
HRCALL(pXMLErr->get_reason(&bstr),"");
dprintf("Failed to load DOM from stocks.xml. %S\n",
bstr);
goto clean;
}
HRCALL(pXMLDom->get_xml(&bstr), "");
dprintf("XML DOM loaded from stocks.xml:\n%S\n",bstr);

clean:
if (bstr) SysFreeString(bstr);
if (&var) VariantClear(&var);
if (pXMLErr) pXMLErr->Release();
if (pXMLDom) pXMLDom->Release();

CoUninitialize();
return 0;
}

这是读取xml文件 ,读取xml字符串用 它的loadxml方法,和托管的类似
人生无回头路 2009-06-30
  • 打赏
  • 举报
回复
请用MS XML写一段程序,来读取这一个XML,就如此简单.
真相重于对错 2009-06-30
  • 打赏
  • 举报
回复
贴出具体问题,你这么泛泛的说,别人怎么回答
人生无回头路 2009-06-30
  • 打赏
  • 举报
回复
是想用MS XML啊.问题是怎么写?网上是有代码,不过都不合适,一到类型转换就过不去了.
真相重于对错 2009-06-30
  • 打赏
  • 举报
回复
非托管可以用msxml 组件啊,那个不是托管的,或者用sax
人生无回头路 2009-06-30
  • 打赏
  • 举报
回复
...看来这里还是以托管为主了.托管我还要C++干吗?我用C#不得了.
真相重于对错 2009-06-30
  • 打赏
  • 举报
回复
非托管的用
用 msxml
托管的用

System::Xml::XmlDocument XmlNode ....

7,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧