类似这样的XML怎么解开才是最好的方案?

calen 2007-10-10 09:56:23
这是厂商反馈回来的XML格式,他们可能使用的是偏Linux等系统,而且是自己定义的。

怎样揭开这个XML才是最优方案?
谢谢!



<?xml version= '1.0 ' encoding= 'UTF-8 '? >
<UranusMsg xmlns="http://www.vivotek.com/Surveillance/ST7501" >
<Header >
<Fixed >
<Type >Res </Type >
<CmdName >ClientHello </CmdName >
<SID >4AEF004F8E01000009A800000F10080046648CF4 </SID >
<Priority >3 </Priority >
<Flags >1 </Flags >
</Fixed >
<Variant >
<Size >0000000485 </Size >
<Target > </Target >
<Return > </Return >
</Variant >
</Header >
<Body >
<UranusRes xmlns="http://www.vivotek.com/Surveillance/ST7501" >
<Code >0 </Code >
<Info >SecurityPolicy </Info >
<SecurityPolicy >
<Version >1.0 </Version >
<AuthList >
<Auth >
<Method >STSimple </Method >
<Param >E2358F2403B8E6D5A60F5BD632B3CFC15F0C099BDEA8BEC0C18235AC8E6247DC </Param >
</Auth >
</AuthList >
<MyName >S_{12345678-9012-3456-7890-123456789012} </MyName >
<MyRefName >S_TestServer </MyRefName >
<YourName >U_6 </YourName >
</SecurityPolicy >
</UranusRes >
</Body >
</UranusMsg >
...全文
136 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
calen 2007-10-24
  • 打赏
  • 举报
回复
thanks
whoo529 2007-10-22
  • 打赏
  • 举报
回复
关注
cnming 2007-10-22
  • 打赏
  • 举报
回复
把你的XML建立一个XSD,然后使用XSD.exe生成架构的Class,然后对你的这个XML进行反系列化即可,对这个Class进行系列化会生成XML

http://blog.csdn.net/cnming/archive/2007/10/11/1819980.aspx

这是系列化,反系列化是其反过程,不过我没有写Blog
calen 2007-10-22
  • 打赏
  • 举报
回复
up
calen 2007-10-11
  • 打赏
  • 举报
回复
zswang

采用路径的模式编程有点麻烦,能否有其余更好的办法?
有些时候,当中的某一两个元素会是不存在的。
jetxia 2007-10-10
  • 打赏
  • 举报
回复
很正常的
王集鹄 2007-10-10
  • 打赏
  • 举报
回复
怎么不是标准的xml了?别被CSDN加几个多余的空格给蒙蔽了,参考如下代码:
XmlDocument vXmlDocument = new XmlDocument();
vXmlDocument.Load(@"c:\temp\temp.xml");
XmlNode vRoot = vXmlDocument.DocumentElement;
XmlNamespaceManager vXmlNamespaceManager =
new XmlNamespaceManager(vXmlDocument.NameTable);
vXmlNamespaceManager.AddNamespace("bk",
"http://www.vivotek.com/Surveillance/ST7501");
XmlNode vType = vXmlDocument.SelectSingleNode(
"/bk:UranusMsg/bk:Header/bk:Fixed/bk:Type",
vXmlNamespaceManager);
if (vType != null) Console.WriteLine("Type.Text={0}", vType.InnerText);
XmlNode vCmdName = vXmlDocument.SelectSingleNode(
"/bk:UranusMsg/bk:Header/bk:Fixed/bk:CmdName",
vXmlNamespaceManager);
if (vCmdName != null) Console.WriteLine("CmdName.Text={0}", vCmdName.InnerText);


<?xml version='1.0' encoding='UTF-8'?> 
<UranusMsg xmlns="http://www.vivotek.com/Surveillance/ST7501">
<Header>
<Fixed>
<Type>Res</Type>
<CmdName>ClientHello</CmdName>
<SID>4AEF004F8E01000009A800000F10080046648CF4</SID>
<Priority>3</Priority>
<Flags>1</Flags>
</Fixed>
<Variant>
<Size>0000000485</Size>
<Target></Target>
<Return></Return>
</Variant>
</Header>
<Body>
<UranusRes xmlns="http://www.vivotek.com/Surveillance/ST7501">
<Code>0</Code>
<Info>SecurityPolicy</Info>
<SecurityPolicy>
<Version>1.0</Version>
<AuthList>
<Auth>
<Method>STSimple</Method>
<Param>E2358F2403B8E6D5A60F5BD632B3CFC15F0C099BDEA8BEC0C18235AC8E6247DC</Param>
</Auth>
</AuthList>
<MyName>S_{12345678-9012-3456-7890-123456789012}</MyName>
<MyRefName>S_TestServer</MyRefName>
<YourName>U_6</YourName>
</SecurityPolicy>
</UranusRes>
</Body>
</UranusMsg>
lovefootball 2007-10-10
  • 打赏
  • 举报
回复
string path = @"E:\111.xml";
string xml = "<?xml version= \"1.0\" encoding= \"UTF-8\"?>";
using (StreamReader sr = new StreamReader(path, Encoding.Default))
{
sr.ReadLine();
xml += sr.ReadToEnd();
}

XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
.............
lovefootball 2007-10-10
  • 打赏
  • 举报
回复
格式不是标准的XML

首先用读文本文件的办法把他改成标准的
然后在按照XML的办法读
fellowcheng 2007-10-10
  • 打赏
  • 举报
回复
关注

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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