这是厂商反馈回来的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 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的办法读
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);
.............
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>
有些时候,当中的某一两个元素会是不存在的。