如何在没有读取的情况下检查XMLReader是否具有有效的XML,以便使用XMLWriter编写完整的XML?

时间:2016-05-02 03:55:56

标签: c# xml string xmlreader xmlwriter

我正在尝试使用XMLWriter将一个字符串(只是XMLNodes)写入一个新的XML文件中。很少有字符串是有效的XML内容,而很少有字符串不是。

字符串输入: 1。

<Test>
<A a="Hello"></A>
<B b="Hello"></B>
</Test>
  1. 你好 这是Sample String但不是XML
  2. 代码:

    using (XmlWriter writer = XmlWriter.Create(@"C:\\Test.XML"))
    {
        writer.WriteStartDocument();
    
       string scontent2 = "Hello This is Sample String but not XML";
    
        XmlReaderSettings settings = new XmlReaderSettings();
        settings.ConformanceLevel = ConformanceLevel.Fragment;
    try{
        using (StringReader stringReader = new StringReader(scontent))
        using (XmlReader xmlReader = XmlReader.Create(stringReader, settings))
        {
        writer.WriteStartElement("Test");
            writer.WriteNode(xmlReader, true);
        writer.WriteEndElement();
        }catch(XMLException exception){}
    
    }
    

    预期输出:

    如果发生异常,也不能创建测试元素。如果我使用scontent.Read()或任何此类问题,问题是因为指针移动到节点,writer.WriteNode(scontent,true)不会写整个节点(如果有两个以上的节点),例如。 <A a="Hello"></A><B b="Hello"></B>。在这种情况下,我使用WriteNode编写所有节点,XMLReader必须处于初始状态(XmlReader.State)。

0 个答案:

没有答案