我有这个XML,我想删除那些:
Name="items"
Name="shipmentsShipmentIndex"
"名称"不会改变,
将要更改的单词是引号之间的单词,在此示例中:
items
和shipmentsShipmentIndex
<?xml version="1.0" encoding="UTF-8"?>
<RootDTO xmlns:json='http://james.newtonking.com/projects/json'>
<destination>
<name>XXX</name>
</destination>
<orderData>
<items json:Array='true'>
<shipmentIndex Name="items">0</shipmentIndex>
</items>
<items json:Array='true'>
<shipmentIndex Name="items">0</shipmentIndex>
</items>
<shipments json:Array='true'>
<shipmentIndex Name="shipmentsShipmentIndex">0</shipmentIndex>
</shipments>
</orderData>
</RootDTO>
如何找到所有这些事件并删除它们(或者什么都不替换它们)?
我尝试了很多变体,例如:Name{1}[a-zA-Z]+"\b
答案 0 :(得分:2)
Don't parse XML with regular expressions。使用XML感知工具。
例如,在xsh中,您可以使用
实现此目的open file.xml ;
rm //@Name ;
save :b ;
答案 1 :(得分:2)
你写的是ASP.NET。您可以使用Linq2Xml非常快速地执行此操作(LinqPad示例):
0
所以从这个:
void Main()
{
var test = XDocument.Parse("<root><node name=\"name value\">Text</node></root>");
foreach(var attr in test.Descendants().SelectMany(el=>el.Attributes("name")))
attr.Remove();
test.Dump();
}
你明白了:
<root>
<node name="name value">Text</node>
</root>
该代码段将删除除根目录之外的XML中的每个元素的所有名称属性。如果你想做其他事情(比如清空属性或包含根元素),请告诉我。
答案 2 :(得分:1)