有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

c#无法在xtest(HIEOS)中创建XMLStreamReader

在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#修改了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保存方法,然后错误被解决了。谢谢大家的支持


共 (2) 个答案

  1. # 1 楼答案

    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错误的原因

  2. # 2 楼答案

    在用XmlWriterStreamWriter加载Xml时,重要的是要提到需要对Xml进行的编码。加载UTF-8XML并不意味着要保存UTF-8XML。使用:

    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);
    }