C# 用C读取和显示XML#
下面的代码无法显示任何内容。我只是尝试从xml文件中读取数据,并将其与应用程序一起显示。据我所知,批处理编译器将是我的根节点。最终,我将把数据放在一个csv文件中,但我会慢慢来确定并理解所有部分。任何建议都很好 XMLC# 用C读取和显示XML#,c#,xml,xmlreader,C#,Xml,Xmlreader,下面的代码无法显示任何内容。我只是尝试从xml文件中读取数据,并将其与应用程序一起显示。据我所知,批处理编译器将是我的根节点。最终,我将把数据放在一个csv文件中,但我会慢慢来确定并理解所有部分。任何建议都很好 XML }这里有一些问题 您的XML无效。如果您实际将文件加载到内存中,则可能会遇到异常(根据前面的问题,您认为是这样)。您有几个未关闭的标记:、、和都是示例文档中缺少的关闭标记 如果这些分散的文本节点分散在整个文档中(示例文档中的+和-部分),您可能会遇到问题 如果试图从XmlRead
}这里有一些问题
、
、
和
都是示例文档中缺少的关闭标记+
和-
部分),您可能会遇到问题XmlReader
加载XElement
,请在完成XElement
之前不要关闭XmlReader
。更好的是,将XmlReader
包装在using
块中,并将XElement
的用法放在该using块中XmlReader
,只需使用XElement.Load()
方法即可。例如,XElement el=XElement.Load(“C:\\example\\extract\\index.xml”)代码>。当然,所有这些都假定您实际获得了一个有效的XML文档
.Elements()
调用看起来是错误的,但无法在文档的当前状态下修复它们,因为无法按原样解析文档看看如何解决这个问题——这实际上意味着首先要获得一个有效的XML文档——然后,如果您仍然有问题,您可以在一个更好的地方发布一个问题。正如Dan所说,您的XML无效,应该是:
<BatchCompiler>
<batch>
<batchid>955698</batchid>
<transactions>
<transaction>
<image>..\images\955698_1_.tif</image>
<items>
<item>
<values>
<value>
<name>Bill Base Number</name>
<data>0002025330</data>
</value>
<value>
<name>acct_num2</name>
<data/>
</value>
<value>
<name>Tax Year</name>
<data>2015</data>
</value>
</values>
</item>
</items>
</transaction>
</transactions>
</batch>
</BatchCompiler>
上面/下面的答案用于获取名称值
static void Main(string[] args)
{
XElement xml = XElement.Load("c:\\example\\extract\\index.xml");
var items = xml.Descendants("name");
foreach (var element in items)
{
Console.WriteLine(element.Value);
}
Console.WriteLine("Finished");
Console.ReadLine();
}
不,我最近问过访问。现在我已经过去了,我在读取数据时遇到了问题@SimonPricel.Elements(“BatchCompiler”).Elements(“BatchCompiler”).DegenantNodes();看起来可疑。我正在运行你的代码,如果XML格式不正确。。。这就是为什么您在读取数据时遇到问题我已经更改了您的XML使其有效,现在将读取,但是您的其他代码需要处理。为什么您要将XML代码更改回无效标记?谢谢。。这对我有用。我的xml文件很好,我只是在浏览器中查看xml时尝试复制其中的一部分。我添加了下面的代码,试图获取另一个dat,但似乎这是唯一写入的数据。我还试图在for-each子句中添加and“&”,但出现了一个错误。var data=xml.substands(“数据”);foreach(数据中的var元素){Console.WriteLine(element.Value);}Console.WriteLine(“完成的数据”)我可以用这种方式获取所有数据吗?如果你想要所有数据,你可能想要将xml反序列化为一个对象图,但是你可以使用XElement作为数据源,因为你可以像上面所看到的那样从驱动器加载它,从中读取,写入,添加元素,删除元素等,然后使用将其写回驱动器。完成后保存。您可以获取三个“值”元素并逐步遍历它们,并将它们作为一对“名称”和“数据”保存
<BatchCompiler>
<batch>
<batchid>955698</batchid>
<transactions>
<transaction>
<image>..\images\955698_1_.tif</image>
<items>
<item>
<values>
<value>
<name>Bill Base Number</name>
<data>0002025330</data>
</value>
<value>
<name>acct_num2</name>
<data/>
</value>
<value>
<name>Tax Year</name>
<data>2015</data>
</value>
</values>
</item>
</items>
</transaction>
</transactions>
</batch>
</BatchCompiler>
static void Main(string[] args)
{
XElement xml = XElement.Load(@"c:\Temp\index.xml");
var items = xml.Descendants("name");
foreach (var element in items)
{
Console.WriteLine(element.Value);
}
Console.WriteLine("Finished");
Console.ReadLine();
}
static void Main(string[] args)
{
XElement xml = XElement.Load("c:\\example\\extract\\index.xml");
var items = xml.Descendants("name");
foreach (var element in items)
{
Console.WriteLine(element.Value);
}
Console.WriteLine("Finished");
Console.ReadLine();
}