访问HIEOS中的xtest(testplan.xml)时,通过。我收到了以下错误。
FatalError (step null) : Could not create XMLStreamReader (in Util.parse_xml()) from string: o;?<?xml version="1.0" encoding="UTF-8"?>
如何解决?
注意:我使用C#.NET修改了XML值;在修改之前,xtest工作正常。可能是什么原因?
其他详细信息:我使用以下C#代码测试了相同的XML文件。
XmlTextReader tr = new XmlTextReader(@"D:\hieos-1.2\xtest\test\scripts\testdata\trial3\submit\testplan.xml");
XmlValidatingReader r = new XmlValidatingReader(tr);
r.ValidationType = ValidationType.None;
try
{
while (r.Read()) ;
}
catch (XmlException e)
{
Console.WriteLine(e.Message);
Console.WriteLine("Exception object Line, pos: (" + e.LineNumber + "," + e.LinePosition + ")");
Console.WriteLine("Exception source URI: (" + e.SourceUri + ")");
Console.WriteLine("XmlReader Line, pos: (" + tr.LineNumber + "," + tr.LinePosition + ")");
}
没有导致异常。我认为XMLStreamReader
会检查XML文件中的其他内容。
我的XML文件的内容是,
<?xml version="1.0" encoding="UTF-8"?>
<TestPlan>
<Test>vsmallpnr/submit</Test>
<TestStep id="submit_docs">
<NewPatientId/>
<ExpectedStatus>Success</ExpectedStatus>
<ProvideAndRegisterTransaction>
<XDSb/>
<AssignUuids/>
<MetadataFile>sor.xml</MetadataFile>
<Document id="Document01">test_pdf_doc.pdf</Document>
<Document id="Document02">test_hitsp_c32.xml</Document>
<Document id="Document03">test_txt_doc.txt</Document>
<Document id="Document04">test_txt_doc.txt</Document>
<Document id="Document05">test_txt_doc.txt</Document>
</ProvideAndRegisterTransaction>
</TestStep>
<TestStep id="reset_patient_id">
<NewPatientId/>
</TestStep>
解决方案: 我使用UTF-8 Encoding.更改了XML保存方法然后错误得到解决。感谢大家的支持。
答案 0 :(得分:0)
使用XmlWriter
或StreamWriter
加载Xml时,请务必提及xml所需的编码。加载UTF-8 xml的事实并不意味着将保存UTF-8 xml。使用方法:
var doc = new XmlDocument();
XmlElement root = doc.CreateElement("myRoot");
doc.AppendChild(root);
root.InnerText = "myInnerText";
using(TextWriter sw = new StreamWriter("C:\\output.txt", false, Encoding.UTF8)) //Set encoding
{
doc.Save(sw);
}
答案 1 :(得分:0)
xtest中XMLStreamReader
的实际问题是由于C#的编码技术。
更改C#代码的encoding technique后,错误就会解决。
using (TextWriter sw = new StreamWriter(@"D:\hieos-1.2\xtest\test\scripts\testdata\trial3\submit\testplan.xml", false, Encoding.Default))
{
xmlDoc.Save(sw);
}
如果我们没有提及编码类型,则会在实际内容之前的XMLDocument
中创建空白区域。这就是Xtest(Java)抛出XMLStreamReader错误的原因。