2015-11-04 62 views
0

我想从字符串中生成xml文件。一个元件在名称和输出的特殊字符应该是这样的:使用特殊字符在Xml元素名称

<Discount %>10</Discount %> 

我知道这是不允许的,但没有“不允许”的意思,它是完全不可能的或者是它只是一个不好的做法?

如果可能我该如何实现它?

这里是我的代码

StringBuilder stringBuilder = new StringBuilder(); 
using (XmlWriter xmlWriter = XmlWriter.Create(stringBuilder)) 
{ 
    xmlWriter.WriteStartElement("Client"); 

    xmlWriter.WriteElementString("Discount %", client.DiscountPercent.ToString()); 

    xmlWriter.WriteEndElement(); 
    xmlWriter.Flush(); 

    XmlDocument outputXmlDocument = new XmlDocument(); 
    outputXmlDocument.LoadXml(stringBuilder.ToString()); // throws this: System.Xml.XmlException: expected '>' (3E) but found '%' (25) Line 1, position 618. 
    File.WriteAllText(path, outputXmlDocument.SelectSingleNode("Tables").OuterXml); 
} 
+1

这不是C#的问题。请检查http://www.w3.org/TR/REC-xml/#NT-NameChar – qxg

+0

如果您不确定元素名称是否有效,可以使用['XmlConvert.EncodeLocalName(string)'](https: //msdn.microsoft.com/en-us/library/system.xml.xmlconvert.encodelocalname%28v=vs.110%29.aspx)以确保名称格式正确。 ['XmlConvert.DecodeName(string)'](https://msdn.microsoft.com/en-us/library/system.xml.xmlconvert.decodename(v = vs.110).aspx)是相反的。 – dbc

+2

考虑使用属性' 10' –

回答

1

元素名称必须用一个词。

和%应避免

考虑:

<Discount> 
<DiscountPercent> 
<Discount_Percent>