c# - 捕获 svclog 文件的第二个 E2ETraceEvent
问题描述
我需要使用服务跟踪查看器找到标签 200,它看起来像这样!
<SOAP-ENV:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-14799">
<ns2:SendInvoice xmlns:ns2="http://www.zadrwan.com/services/" xmlns:ns3="http://www.zadrwan.com/services/DocumentSendTo" xmlns:ns4="http://www.zadrwan.com/services/VersionRequest">
<ns2:Response>200</ns2:Response>
<ns2:Comments>Success!.</ns2:Comments>
</ns2:SendInvoice>
运行 web 服务时,会执行 Trace 并编写 E2ETraceEvent 第一个我不需要它,但第二个 E2ETraceEvent (request) 是我需要的,并且在哪里
我在这个页面上找到了一些代码monitoring-and-reading-svclog-file
我的代码是这样的:
XmlReader reader = XmlReader.Create(stream, settings);
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
if (reader.Name == "E2ETraceEvent")
{
XmlReader subReader = reader.ReadSubtree();
while (subReader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
while (reader.Name == "Body")
{
Console.WriteLine(subReader.ReadOuterXml());
}
break;
}
}
}
break;
}
}
我如何使用包含 n2 响应的标签捕获第二个?
解决方案
您需要添加命名空间。就像是:
using (XmlReader reader = XmlReader.Create(new StringReader(xml)))
{
XmlNamespaceManager nsmanager = new XmlNamespaceManager(reader.NameTable);
nsmanager.AddNamespace("ns2", "http://www.zadrwan.com/services/");
while (reader.Read())
{
switch (reader.Name)
{
case "ns2:Response":
Console.WriteLine(reader.Name);
Console.WriteLine(reader.ReadInnerXml());
break;
}
}
}
推荐阅读
- node.js - node js html文件加载问题,我该如何解决?
- python-3.x - 错误的匹配正则表达式
- node.js - 我们如何在更新中使用 $subtract 聚合管道运算符和位置 $ 运算符?
- amazon-web-services - 如何在 EC2 实例上运行命令?SSM 中缺少 AWS-RunShellScript
- r - 根据文件扩展名选择文件的最佳方法(用 r 编写)
- bash - 禁止 stderr 控制台输出,但在 Shell 中保留退出代码
- python - 压缩 Python 生成器,第二个更短:如何检索被静默消耗的元素
- reactjs - 在将数据存储到firebase并在react redux中更新状态时出现以下错误
- laravel - 现有列的 renameColumn 迁移失败,列不存在错误
- java - 图传递性 Java