繁体   English   中英

HTTP响应的XML格式

[英]XML formatting from HTTP response

我正在使用一些asp.net/c#和一些HP ILO脚本我POST,然后我得到一个repsonse(应该是XML)

不幸的是,如果没有正确格式化XML,那么使用XML解析器的响应是不可能的,因为错误。

这是一个示例输出:

IP Address is: 10.3.3.1
<?xml version="1.0"?>
<RIBCL VERSION="2.22">
    <RESPONSE
        STATUS="0x0000"
        MESSAGE='No error'
     />
    <INFORM>Scripting utility should be updated to the latest version.</INFORM>
</RIBCL>
<?xml version="1.0"?>
<RIBCL VERSION="2.22">
    <RESPONSE
        STATUS="0x0000"
        MESSAGE='No error'
     />
</RIBCL>
<GET_EMBEDDED_HEALTH_DATA>
    <FANS>
        <FAN>...

所以我关心的数据都在<GET_EMBEDDED_HEALTH_DATA> ,如果我删除了不正确的语法,它可以与XML解析器一起使用。

我的问题是如何拉/格式化我需要的数据? 我知道我可以将不正确的xml响应保存到文本文件,格式化它,然后xml解析它但是有更好/更快的方法吗?

连续100次运行也需要很长时间。

从您上面显示的内容来看,XML部分本身是格式良好的,但文本包含多个XML声明和多个根。 那些是唯一的问题还是其他地方存在真正的错误XML?

如果这些是唯一的问题,这样的事情可能会起作用:

string declarationsRemoved = output.Replace("<?xml version=\"1.0\"?>", "");

XmlDocument doc = new XmlDocument();
doc.LoadXml("<root>" + declarationsRemoved + "</root>");

XmlNode healthData = doc.SelectSingleNode("/root/GET_EMBEDDED_HEALTH_DATA");

或者,您可以使用正则表达式提取所需的部分:

string healthDataXml = Regex.Match(output, 
    "<GET_EMBEDDED_HEALTH_DATA>.*</GET_EMBEDDED_HEALTH_DATA>", RegexOptions.Singleline).ToString();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM