日期:2014-05-18  浏览次数:20773 次

类似这样的XML怎么解开才是最好的方案?
这是厂商反馈回来的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 >

------解决方案--------------------
怎么不是标准的xml了?别被CSDN加几个多余的空格给蒙蔽了,参考如下代码:
C# code
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);