我正在使用以下xml文件来读取我需要写入的文件的内容:
<properties>
<url>http://www.leagueoflegends.com/service-status</url>
<content>host=beta.lol.riotgames.com
xmpp_server_url=chat.na.lol.riotgames.com
lobbyLandingURL=http://www.leagueoflegends.com/pvpnet_landing
ladderURL=http://www.leagueoflegends.com/ladders
storyPageURL=http://www.leagueoflegends.com/story
lq_uri=https://lq.na.lol.riotgames.com/login-queue/rest/queue</content>
</properties>
我故意让内容元素只有换行符而不是其他内容(而不是正确的格式)。 但是,当我将内容元素读取到字符串时,它会在行的开头添加几个换行符和制表符。通过写入文本文件得到的结果如下:
<imaginary newline here>
host=beta.lol.riotgames.com
xmpp_server_url=chat.na.lol.riotgames.com
lobbyLandingURL=http://www.leagueoflegends.com/pvpnet_landing
ladderURL=http://www.leagueoflegends.com/ladders
storyPageURL=http://www.leagueoflegends.com/story
lq_uri=https://lq.na.lol.riotgames.com/login-queue/rest/queue
<imaginary newline here><additional tab here>
这里的问题是我需要该文本只是从第一行开始,没有标签,没有空格,只有新行。
阅读内容标记的C#代码是:
XDocument root = XDocument.Parse(File.ReadAllText(file), LoadOptions.PreserveWhitespace);
PropertyFile PF = new PropertyFile();
PF.Content = (from Content in root.Descendants("content")
select (string)Content.Value).Single();
文件是文件的路径,因为我能够阅读其他所有内容。
非常感谢任何想法。
提前致谢
修改 前面的PropertyFile类代码(内容只是一个字符串,用于保存我正在阅读的文件类型的一个文件的数据):
class PropertyFile
{
public Uri URI { get; set; }
public string Name { get; set; }
public string Path { get; set; }
public string Content { get; set; }
}
文件的所需输出是:
host=beta.lol.riotgames.com
xmpp_server_url=chat.na.lol.riotgames.com
lobbyLandingURL=http://www.leagueoflegends.com/pvpnet_landing
ladderURL=http://www.leagueoflegends.com/ladders
storyPageURL=http://www.leagueoflegends.com/story
lq_uri=https://lq.na.lol.riotgames.com/login-queue/rest/queue
答案 0 :(得分:2)
默认情况下,XDocument / XElement的序列化格式(即缩进)xml片段。
尝试使用:
root.Save("Root.xml", SaveOptions.DisableFormatting);
但是,任何DOM操作都不会涉及无关紧要的空格/制表符。你在元素中写的是你得到的。
答案 1 :(得分:1)
尝试将LoadOptions设置为无:
XDocument root = XDocument.Parse(File.ReadAllText(file), LoadOptions.None);
根据MSDN,这将忽略所有无关紧要的空白。
我尝试了它(只有一个字符串表示你的XML - 我没有费心从文件中加载它)并获得以下内容:
主机= beta.lol.riotgames.com xmpp_server_url = chat.na.lol.riotgames.com lobbyLandingURL = HTTP://www.leagueoflegends.com/pvpnet_landing ladderURL = HTTP://www.leagueoflegends.com/ladders storyPageURL = HTTP://www.leagueoflegends.com/story lq_uri = HTTPS://lq.na.lol.riotgames.com/login-queue/rest/queue
这就是你要找的东西吗?
已编辑添加我使用的代码
string xml = @"<properties>
<url>http://www.leagueoflegends.com/service-status</url>
<content>host=beta.lol.riotgames.com
xmpp_server_url = chat.na.lol.riotgames.com lobbyLandingURL = HTTP://www.leagueoflegends.com/pvpnet_landing ladderURL = HTTP://www.leagueoflegends.com/ladders storyPageURL = HTTP://www.leagueoflegends.com/story lq_uri = HTTPS://lq.na.lol.riotgames.com/login-queue/rest/queue “;
XDocument root = XDocument.Parse(xml, LoadOptions.None);
var content = (from Content in root.Descendants("content")
select (string)Content.Value).Single();
答案 2 :(得分:1)
如果你尝试,你会得到什么??
using System.IO;
XDocument root = XDocument.Parse(File.ReadAllText(file),
LoadOptions.PreserveWhitespace);
string content = (from Content in root.Descendants("content")
select (string)Content.Value).Single();
File.WriteAllText("SomeTempFile.txt", content);
我怀疑此文本文件将按预期格式化。这表示PropertyFile
存在问题。