xml文件中如何插入换行

zhu5152 2018-05-22 11:02:40


这个是想要的格式



实际生成的格式是这样的。

现在有2个问题,1.节点属性之间如何换行 2.lurl 属性是一个拼接成的字符串,一行一行拼接的,拼接处怎么加换行。

试过 \n \t\n 最后都会被转义掉 怎样才不会被转义呢实现换行的效果??
...全文
4283 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_42276067 2019-03-22
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="utf-8"?>
<root>
<map>www.alipay.com www.baidu.com
www.qq.com
www.163.com</map>
</root>

我像让某一个指定的属性换行怎么做啊,比如上面是让第三个换行
  • 打赏
  • 举报
回复
引用 9 楼 zhu5152 的回复:
[quote=引用 7 楼 u012142699 的回复:] [quote=引用 6 楼 zhu5152 的回复:] [quote=引用 5 楼 u012142699 的回复:] [quote=引用 3 楼 zhu5152 的回复:] [quote=引用 2 楼 u012142699 的回复:] 老铁你不是搞事吗,你那个 type 是 provider 节点的一个 attribute,这原本就是个字符串,你居然要它给你换行~ 不过如果你把 type 作为 provider 节点的值,那么就可达成你的目标,代码如下:

public static XElement ReadXml()
{
    var url = new string[] { "www.alipay.com", "www.baidu.com", "www.qq.com", "www.163.com" };

    var xml = new XElement("root",
        new XElement("map", String.Join(Environment.NewLine, url)));

    return xml;
}
结果如下:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <map>www.alipay.com
www.baidu.com
www.qq.com
www.163.com</map>
</root>
这和我想要的稍微有一点点不一样 <?xml version="1.0" encoding="utf-8"?> <root> <map web=www.alipay.com, www.baidu.com, www.qq.com, www.163.com></map> </root> 这样才是我想要的结果[/quote] 你type是节点的attribute(属性值)本就是个字符串,你却让它强制换行,这.......(如果最终保存的文件后缀不是.xml而是.txt这样可以实现)[/quote] 我用XmlDocument 的 sava方法保存的文件 保存的时候后缀改成.txt 文件里的换行还是不行[/quote] 可以的,xml在构建的时候会把Environment.NewLine转换成 所以在保存为文本时将之替换(不可用XDocument保存,里面存有转译) 具体代码:

var url = new string[] { "www.alipay.com", "www.baidu.com", "www.qq.com", "www.163.com" };
var xml = new XElement("root",
    new XElement("map", new XAttribute("type", String.Join(Environment.NewLine, url))));

var xmlbyte = Encoding.UTF8.GetBytes(xml.ToString());

using (var fs = new FileStream("xml.txt", FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
{
    fs.Write(xmlbyte, 0, xmlbyte.Length);
} [/code] [/quote]我试了下你的代码 出来的也是 [/quote] 这句代码忘记替换了:
var xmlbyte = Encoding.UTF8.GetBytes(xml.ToString().Replace("
", Environment.NewLine));
zhu5152 2018-05-24
  • 打赏
  • 举报
回复
引用 7 楼 u012142699 的回复:
[quote=引用 6 楼 zhu5152 的回复:]
[quote=引用 5 楼 u012142699 的回复:]
[quote=引用 3 楼 zhu5152 的回复:]
[quote=引用 2 楼 u012142699 的回复:]
老铁你不是搞事吗,你那个 type 是 provider 节点的一个 attribute,这原本就是个字符串,你居然要它给你换行~
不过如果你把 type 作为 provider 节点的值,那么就可达成你的目标,代码如下:

public static XElement ReadXml()
{
var url = new string[] { "www.alipay.com", "www.baidu.com", "www.qq.com", "www.163.com" };

var xml = new XElement("root",
new XElement("map", String.Join(Environment.NewLine, url)));

return xml;
}

结果如下:

<?xml version="1.0" encoding="utf-8"?>
<root>
<map>www.alipay.com
www.baidu.com
www.qq.com
www.163.com</map>
</root>
这和我想要的稍微有一点点不一样
<?xml version="1.0" encoding="utf-8"?>
<root>
<map web=www.alipay.com,
www.baidu.com,
www.qq.com,
www.163.com></map>
</root>
这样才是我想要的结果[/quote]
你type是节点的attribute(属性值)本就是个字符串,你却让它强制换行,这.......(如果最终保存的文件后缀不是.xml而是.txt这样可以实现)[/quote]
我用XmlDocument 的 sava方法保存的文件 保存的时候后缀改成.txt 文件里的换行还是不行[/quote]
可以的,xml在构建的时候会把Environment.NewLine转换成 所以在保存为文本时将之替换(不可用XDocument保存,里面存有转译)
具体代码:

var url = new string[] { "www.alipay.com", "www.baidu.com", "www.qq.com", "www.163.com" };
var xml = new XElement("root",
new XElement("map", new XAttribute("type", String.Join(Environment.NewLine, url))));

var xmlbyte = Encoding.UTF8.GetBytes(xml.ToString());

using (var fs = new FileStream("xml.txt", FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
{
fs.Write(xmlbyte, 0, xmlbyte.Length);
}

[/quote]我试了下你的代码 出来的也是
  • 打赏
  • 举报
回复
引用 6 楼 zhu5152 的回复:
[quote=引用 5 楼 u012142699 的回复:] [quote=引用 3 楼 zhu5152 的回复:] [quote=引用 2 楼 u012142699 的回复:] 老铁你不是搞事吗,你那个 type 是 provider 节点的一个 attribute,这原本就是个字符串,你居然要它给你换行~ 不过如果你把 type 作为 provider 节点的值,那么就可达成你的目标,代码如下:

public static XElement ReadXml()
{
    var url = new string[] { "www.alipay.com", "www.baidu.com", "www.qq.com", "www.163.com" };

    var xml = new XElement("root",
        new XElement("map", String.Join(Environment.NewLine, url)));

    return xml;
}
结果如下:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <map>www.alipay.com
www.baidu.com
www.qq.com
www.163.com</map>
</root>
这和我想要的稍微有一点点不一样 <?xml version="1.0" encoding="utf-8"?> <root> <map web=www.alipay.com, www.baidu.com, www.qq.com, www.163.com></map> </root> 这样才是我想要的结果[/quote] 你type是节点的attribute(属性值)本就是个字符串,你却让它强制换行,这.......(如果最终保存的文件后缀不是.xml而是.txt这样可以实现)[/quote] 我用XmlDocument 的 sava方法保存的文件 保存的时候后缀改成.txt 文件里的换行还是不行[/quote] 可以的,xml在构建的时候会把Environment.NewLine转换成 所以在保存为文本时将之替换(不可用XDocument保存,里面存有转译) 具体代码:

var url = new string[] { "www.alipay.com", "www.baidu.com", "www.qq.com", "www.163.com" };
var xml = new XElement("root",
    new XElement("map", new XAttribute("type", String.Join(Environment.NewLine, url))));

var xmlbyte = Encoding.UTF8.GetBytes(xml.ToString());

using (var fs = new FileStream("xml.txt", FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
{
    fs.Write(xmlbyte, 0, xmlbyte.Length);
}
zhu5152 2018-05-22
  • 打赏
  • 举报
回复
引用 5 楼 u012142699 的回复:
[quote=引用 3 楼 zhu5152 的回复:] [quote=引用 2 楼 u012142699 的回复:] 老铁你不是搞事吗,你那个 type 是 provider 节点的一个 attribute,这原本就是个字符串,你居然要它给你换行~ 不过如果你把 type 作为 provider 节点的值,那么就可达成你的目标,代码如下:

public static XElement ReadXml()
{
    var url = new string[] { "www.alipay.com", "www.baidu.com", "www.qq.com", "www.163.com" };

    var xml = new XElement("root",
        new XElement("map", String.Join(Environment.NewLine, url)));

    return xml;
}
结果如下:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <map>www.alipay.com
www.baidu.com
www.qq.com
www.163.com</map>
</root>
这和我想要的稍微有一点点不一样 <?xml version="1.0" encoding="utf-8"?> <root> <map web=www.alipay.com, www.baidu.com, www.qq.com, www.163.com></map> </root> 这样才是我想要的结果[/quote] 你type是节点的attribute(属性值)本就是个字符串,你却让它强制换行,这.......(如果最终保存的文件后缀不是.xml而是.txt这样可以实现)[/quote] 我用XmlDocument 的 sava方法保存的文件 保存的时候后缀改成.txt 文件里的换行还是不行
  • 打赏
  • 举报
回复
引用 3 楼 zhu5152 的回复:
[quote=引用 2 楼 u012142699 的回复:] 老铁你不是搞事吗,你那个 type 是 provider 节点的一个 attribute,这原本就是个字符串,你居然要它给你换行~ 不过如果你把 type 作为 provider 节点的值,那么就可达成你的目标,代码如下:

public static XElement ReadXml()
{
    var url = new string[] { "www.alipay.com", "www.baidu.com", "www.qq.com", "www.163.com" };

    var xml = new XElement("root",
        new XElement("map", String.Join(Environment.NewLine, url)));

    return xml;
}
结果如下:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <map>www.alipay.com
www.baidu.com
www.qq.com
www.163.com</map>
</root>
这和我想要的稍微有一点点不一样 <?xml version="1.0" encoding="utf-8"?> <root> <map web=www.alipay.com, www.baidu.com, www.qq.com, www.163.com></map> </root> 这样才是我想要的结果[/quote] 你type是节点的attribute(属性值)本就是个字符串,你却让它强制换行,这.......(如果最终保存的文件后缀不是.xml而是.txt这样可以实现)
zhu5152 2018-05-22
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
在合适的位置加入 Environment.NewLine 试试呢
生成xml文件后 换行就变成 了
zhu5152 2018-05-22
  • 打赏
  • 举报
回复
引用 2 楼 u012142699 的回复:
老铁你不是搞事吗,你那个 type 是 provider 节点的一个 attribute,这原本就是个字符串,你居然要它给你换行~ 不过如果你把 type 作为 provider 节点的值,那么就可达成你的目标,代码如下:

public static XElement ReadXml()
{
    var url = new string[] { "www.alipay.com", "www.baidu.com", "www.qq.com", "www.163.com" };

    var xml = new XElement("root",
        new XElement("map", String.Join(Environment.NewLine, url)));

    return xml;
}
结果如下:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <map>www.alipay.com
www.baidu.com
www.qq.com
www.163.com</map>
</root>
这和我想要的稍微有一点点不一样 <?xml version="1.0" encoding="utf-8"?> <root> <map web=www.alipay.com, www.baidu.com, www.qq.com, www.163.com></map> </root> 这样才是我想要的结果
  • 打赏
  • 举报
回复
老铁你不是搞事吗,你那个 type 是 provider 节点的一个 attribute,这原本就是个字符串,你居然要它给你换行~ 不过如果你把 type 作为 provider 节点的值,那么就可达成你的目标,代码如下:

public static XElement ReadXml()
{
    var url = new string[] { "www.alipay.com", "www.baidu.com", "www.qq.com", "www.163.com" };

    var xml = new XElement("root",
        new XElement("map", String.Join(Environment.NewLine, url)));

    return xml;
}
结果如下:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <map>www.alipay.com
www.baidu.com
www.qq.com
www.163.com</map>
</root>
exception92 2018-05-22
  • 打赏
  • 举报
回复
在合适的位置加入 Environment.NewLine 试试呢
一、文件增强 打开已注册文件夹 命令扩展 另存为按钮 重新载入按钮 重新载入 按原始时间戳保存 简单备份 二、编辑增强 插入空格 插入数字序列 绘制表格 文字转换为表格 删除行末空格 块粘帖 数字排序(升序) 数字排序(降序) 字符排序(升序) 字符排序(降序) 查找左括号 查找右括号 自动复制 自动完成 自动追加 左对齐 右对齐 居 转为竖排 全选按钮 删除按钮 反向删除按钮 追加复制 追加剪切 删除重复行 Tab 转为空格 空格转为 Tab 行首 Tab 转为空格 行首空格转为 Tab 插入 Unicode 字符 从文件插入 修改只读文件 插入引用标记 删除引用标记 转换换行符 调整缩进 三、内码转换 解码 Base64 或 uudecode 编码 Unicode 解码 Unicode 转换为繁体文 转换为简体文 四、显示增强 分割窗口 横向分割窗口 纵向分割窗口 显示标尺 显示行号 显示回车符 文字信息 计算单词数 求和 取色器 显示非打印字符 统计指定字符数 改变换行方式 显示参考线 显示行号和标尺 改变 Tab 宽度 改变行距 改变字号 自动滚屏 五、浏览器 用 IE 预览 用 Mozilla 预览 用 Netscape7 预览 用 Opera 预览 六、编程开发 插入行注释 删除行注释 移到上一句子 移到下一句子 移到上一段落 移到下一段落 移到上一函数 移到下一函数 块高亮显示(C语言) 插入注释标记(C语言) XML 提示 XML 校验工具 插入Arial 1号字标记 插入Arial 2号字标记 插入Times 1号字标记 插入Times 2号字标记 插入表格标记 插入行标记 插入单元格标记 插入超链接标记 插入标记 插入段落标记 插入换行标记 插入图像标记 插入粗体字标记 插入斜体字标记 插入下划线标记 插入注释标记 七、杂项 快捷宏工具 保存快捷宏 载入快捷宏 设置窗口透明度 属性弹出菜单 同步滚动窗口 传统帮助按钮 XP风格帮助按钮 HTML风格帮助 八、拼写检查 拼写检查 拼写检查(英式英语) 拼写检查(美式英语)

1,978

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧