我有一些代码,它将一个对象序列化为一个文件.我正在尝试将每个XML属性输出到单独的行.代码如下所示:
public static void ToXMLFile(Object obj, string filePath)
{
XmlSerializer serializer = new XmlSerializer(obj.GetType());
XmlWriterSettings settings = new XmlWriterSettings();
settings.NewLineOnAttributes = true;
XmlTextWriter writer = new XmlTextWriter(filePath, Encoding.UTF8);
writer.Settings = settings; // Fails here. Property is read only.
using (Stream baseStream = writer.BaseStream)
{
serializer.Serialize(writer, obj);
}
}
Run Code Online (Sandbox Code Playgroud)
唯一的问题是,对象的Settings属性XmlTextWriter是只读的.
如何Settings在XmlTextWriter对象上设置属性,以便NewLineOnAttributes设置有效?
嗯,我以为我需要一个XmlTextWriter,因为XmlWriter是一个abstract班级.如果你问我,有点困惑. 最终的工作代码在这里:
/// <summary>
/// Serializes an object to an XML file; writes each …Run Code Online (Sandbox Code Playgroud) XMLWriter和之间有什么区别XMLDictionaryWriter?在哪些情况下每个人都使用?
我正在尝试将XML文件写入隔离存储,但我想将其格式化为: -
<SampleData>
<Item Property1="AliquaXX" />
<Item Property1="Integer" />
<Item Property1="Quisque" />
<Item Property1="Aenean" />
<Item Property1="Mauris" />
<Item Property1="Vivamus" />
<Item Property1="Nullam" />
<Item Property1="Nam" />
<Item Property1="Sed" />
<Item Property1="Class" />
</SampleData>
Run Code Online (Sandbox Code Playgroud)
但如果我能解决这个问题,我会感到烦恼,任何人都可以帮忙吗?
谢谢,挣扎的新手.
我在工作中使用.NET XML技术.我非常喜欢的一件事是XSLT引擎,更确切地说是它的可扩展性.然而,有一件小东西一直是烦恼的源头.没有任何重大或我们无法忍受的东西,但它阻止我们生成我们想要生成的漂亮的XML.
我们做的一件事是将节点内联转换并将节点从一个XML文档导入另一个XML文档.
遗憾的是,当您将节点保存到XmlTextWriter(实际上无论何种XmlWriter.Create(Stream) 返回)时,命名空间定义都会被抛出,无论是否有必要(先前已定义).你会得到以下xml:
<root xmlns:abx="http://bladibla">
<abx:child id="A">
<grandchild id="B">
<abx:grandgrandchild xmlns:abx="http://bladibla" />
</grandchild>
</abx:child>
</root>
Run Code Online (Sandbox Code Playgroud)
有没有人建议如何说服.NET对其命名空间定义有效?
PS.作为一个额外的好处,我想覆盖默认命名空间,在编写节点时更改它.
我收到了这个错误
在同一个start元素标记内,前缀''无法从''重新定义为' http://www.sitemaps.org/schemas/sitemap/0.9 '
在运行此代码时
Dim writer As XmlWriter = XmlWriter.Create(FileLocation + "StaticUrls3.xml")
Dim urlList As New List(Of String)
urlList.Add("link1")
urlList.Add("link2")
urlList.Add("link3")
writer.WriteStartDocument()
writer.WriteStartElement("urlset")
writer.WriteAttributeString("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9")
For Each aUrl As String In urlList
writer.WriteStartElement("url")
writer.WriteElementString("loc", aUrl)
writer.WriteEndElement()
Next
writer.WriteEndElement()
writer.WriteEndDocument()
writer.Close()
Run Code Online (Sandbox Code Playgroud)
为什么我收到此错误?
我想将我的对象序列化为xml,然后序列化为字符串.
public class MyObject
{
[XmlElement]
public string Name
[XmlElement]
public string Location;
}
Run Code Online (Sandbox Code Playgroud)
我想获得一个单行字符串,它会像这样:
<MyObject><Name>Vladimir</Name><Location>Moskov</Location></MyObject>
Run Code Online (Sandbox Code Playgroud)
我正在使用这样的代码:
XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
settings.Indent = true;
StringWriter StringWriter = new StringWriter();
StringWriter.NewLine = ""; //tried to change it but without effect
XmlWriter writer = XmlWriter.Create(StringWriter, settings);
XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
namespaces.Add(string.Empty, string.Empty);
XmlSerializer MySerializer= new XmlSerializer(typeof(MyObject ));
MyObject myObject = new MyObject { Name = "Vladimir", Location = "Moskov" };
MySerializer.Serialize(writer, myObject, namespaces);
string s …Run Code Online (Sandbox Code Playgroud) 如何从正在创建的XML文件中删除BOM?
我尝试过使用新的UTF8Encoding(false)方法,但它不起作用.这是我的代码:
XmlDocument xmlDoc = new XmlDocument();
XmlTextWriter xmlWriter = new XmlTextWriter(filename, new UTF8Encoding(false));
xmlWriter.Formatting = Formatting.Indented;
xmlWriter.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-8'");
xmlWriter.WriteStartElement("items");
xmlWriter.Close();
xmlDoc.Load(filename);
XmlNode root = xmlDoc.DocumentElement;
XmlElement item = xmlDoc.CreateElement("item");
root.AppendChild(item);
XmlElement itemCategory = xmlDoc.CreateElement("category");
XmlText itemCategoryText = xmlDoc.CreateTextNode("test");
item.AppendChild(itemCategory);
itemCategory.AppendChild(itemCategoryText);
xmlDoc.Save(filename);
Run Code Online (Sandbox Code Playgroud) 我正在创建一个类似Xml的格式XmlWriter.但在输出中也有版本信息.
<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)
我的文件中不需要这个.我怎样才能做到这一点?有没有办法通过代码删除它?
我目前正在使用XMLWriter来显示xml文件.但是,我想知道如何将输出导出到.xml文件.
我目前的代码是:
$res = mysql_query($sql);
$xml = new XMLWriter();
$xml->openURI("php://output");
$xml->startDocument();
$xml->startElement('stores');
while ($row = mysql_fetch_assoc($res)) {
//loads of code
}
$xml->endElement();
$xml->flush();
Run Code Online (Sandbox Code Playgroud) 如何从System.Xml.XmlReader编写XML文件?
我认为这将是一个简单的问题,但每当我搜索时,我似乎最终都会将文件读取到读取器或逐个节点地编写.
XmlReader对象传达存储在数据库中的xml,只需要从数据库中传出一个文件即可.有没有简单的方法来做到这一点?
SqlCommand dataCmd = new SqlCommand(sqlText, Conn);
System.Xml.XmlReader dataReader = null;
dataCmd.CommandTimeout = 60000;
Conn.Open();
dataReader = dataCmd.ExecuteXmlReader();
dataReader.Read();
Run Code Online (Sandbox Code Playgroud)