运行以下代码时收到此消息:
XML文档中存在错误(6,22)。
namespace N1
{
public class InputEntry
{
//FieldName is a class tht is generated from an XSD which has complex type Name and value
private Field fields;
public Field[] Fields
{
get { return this.fields; }
set { this.fields= value; }
}
public string FieldName
{
get{return this.fieldName;}
set { this.fieldName = value; }
}
public string FieldValue
{
get {return this.fieldValue; }
set {this.fieldValue = value;}
}
}
public class B
{
public void Method1()
{
InputEntry inputEntry = new InputEntry();
//we some how get the values from user and assign them to
Field f1 = new Field();
f1.FieldName = "PRINTLINE00";
f1.FieldValue = "DENIAL STATE" ;
}
private void Method2(InputEntry inputEntry)
{
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(InputEntry));
System.IO.StringWriter inputStr = new System.IO.StringWriter(CultureInfo.InvariantCulture);
serializer.Serialize(inputStr, inputEntry);
string ipEntry = inputStr.ToString();
Method3(ipEntry);
}
private void Method3(string ipEntry)
{
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(InputEntry));
System.IO.StringReader inputStr = new System.IO.StringReader(ipEntry);
InputEntry inputEntry = (InputEntry)serializer.Deserialize(inputStr);
}
}
}
// when client configues input data as
// <FieldName>PRINTLINE00</FieldName> <FieldValue>DENIAL STATE</FieldValue>,
//I get an exception when the same data deserialised
//Exception is:-
字符串:
<?xml version="1.0" encoding="utf-16"?>
<InputEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Fields>
<Field>
<FieldName>PRINTLINE00</FieldName>
<FieldValue>DENIAL STATE 217</FieldValue>
</Field>
</Fields>
</InputEntry>
答案 0 :(得分:7)
除了你错过了一个结束字段标记这一事实之外,你还试图序列化Unicode字符U + 001B ......遗憾的是,XML不支持。
这是一个“逃脱”角色......你真的想要在字符串中开始吗?您可以在代码中添加验证(或修剪)。
答案 1 :(得分:2)
xml文档中缺少</Fields>
标记。
答案 2 :(得分:1)
您需要关闭字符检查,如下所示:
serializer.Deserialize (XmlReader.Create (inputStr, new XmlReaderSettings
{ CheckCharacters = false, }))
答案 3 :(得分:0)
<FieldName>PRINTLINE00</FieldName> <FieldValue**>**DENIAL STATE</FieldValue>
缺少&lt;