下面有XML文件。当我在Process中使用它时,它给我的错误就像
2016-06-22 19:29:53 IST错误:“第15栏第20栏:”电子元器件的字符内容无效;必须等于XPath /products/product1 1/item_type中的“食品”、“货物”或“手机”。
此XPath /products/product[1]不正确。这是他们的系统的回报。所以,我必须搜索它,并通过行替换原始值不只是。
Order.xml
<products>
<product>
<country>AE</country>
<sale>false</sale>
<item_type>foods</item_type>
</product>
<product>
<country>IN</country>
<sale>false</sale>
<item_type>goods</item_type>
</product>
<product>
<country>US</country>
<sale>false</sale>
<item_type>electronics</item_type>
</product>
<product>
<country>AM</country>
<sale>false</sale>
<item_type>mobiles</item_type>
</product>
</products>请让我知道使用XML文档中的第15行进行搜索
发布于 2016-06-23 07:33:47
在处理xml时,不应该依赖行/冒号。Xml不太关心空格,格式化只是方便可读性;虽然在您的示例中正确地报告了它,但我不相信将来会是这样。有趣的是,xpath也是不正确的,但是暂时不要过多地讨论这个问题。
你得重新控制问题..。您应该创建自己的验证读取器,并在解析xml时捕获验证错误。如何做到这一点将取决于您所使用的框架。XmlValidatingReader或,XmlReader与适当的XmlReaderSettings。您可以在读取xml文件时设置回调/均衡器来捕获错误,这样您就可以确定您的位置是正确的,并掌握处理该错误所需的所有信息。使用XmlReader还将允许您继续处理整个文件,而不仅仅是在第一个错误时停止。
代码太大了,我们需要从您那里获得更多的信息,但是google搜索会发现很多例子,包括microsoft:https://msdn.microsoft.com/en-us/library/w5aahf2a(v=vs.100).aspx的例子。
发布于 2016-06-23 03:49:16
这对你有用吗?
string[] lines = File.ReadAllLines(@"C:\order.xml", Encoding.UTF8);
var line15 = lines[14];发布于 2016-06-23 05:33:48
XmlDocument doc = new XmlDocument();
doc.Load(@"C:\order.xml");
XmlElement el =(XmlElement)doc.SelectSingleNode("/products/product[1]/item_type");
if(el != null) { el.ParentNode.RemoveChild(el); }您可以通过使用上面的code...using正确的Xpath删除节点,您可以删除不等于食物、好的或移动的所有item_type。
https://stackoverflow.com/questions/37981882
复制相似问题