我正在尝试更改XML文件中的值。应该很容易,除非打字像猴子我无法让它工作。 XML片段如下:
<SENDLABEL LABELACTION="PRINT" NAMEINPRINTER="MLabel1" PRINTERVARIANT="162-12L" FORMAT="LEGACY" PRINTTOFILEPATH="">
<TABLE NAME="PARAMVALUE"><ROWDATA><ROW PARAM="MAXGRAPHICCOMPRESSION" VALUE="0"/><ROW PARAM="BARCODELABELSEQNOLEN" VALUE="0"/><ROW PARAM="LABELROTATION" VALUE="0"/><ROW PARAM="BARCODEGLOBALSEQNOLEN" VALUE="0"/><ROW PARAM="PRINTAMOUNT" VALUE="1"/><ROW PARAM="LABELLOCATION" VALUE="0"/><ROW PARAM="CHARACTERMODE" VALUE="ASCII"/></ROWDATA></TABLE>
<TABLE NAME="PLSAREA"><ROWDATA><ROW PLSETUPNO="11217" PRINTERAREA="0"/></ROWDATA></TABLE>
<TABLE NAME="PLSCHAN"><ROWDATA><ROW PLSETUPNO="11217" PRINTERAREA="0" CHANNELINDEX="0" HORIZONTALDPI="304" VERTICALDPI="304" RASTER="0"/></ROWDATA></TABLE>
<TABLE NAME="PLSETUP"><ROWDATA><ROW LABELHEIGHT="795" LABELWIDTH="580,147"/></ROWDATA></TABLE>
我使用的代码如下。 PRINTERVARIANT将没有问题,但LABELHEIGHT不会。也许是因为XML有很多TABLE,不知何故我需要指定这是一个值为PLSETUP的?如果是这样,我该怎么做呢。
string variant = "108-12L";
string height = "378";
string width = "377,952";
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(name);
XmlNode node = xmlDoc.SelectSingleNode("/SENDLABEL");
node.Attributes["PRINTERVARIANT"].Value = variant;
XmlNode node2 = xmlDoc.SelectSingleNode("/SENDLABEL/TABLE/ROWDATA/ROW");
node2.Attributes["LABELHEIGHT"].Value = height;
答案 0 :(得分:1)
这可以通过多种方式实现,但Linq to xml是我的首选。
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
现在,您可以通过循环浏览项目来更新 LABELHEIGHT 行(如需要说明)
var rows = doc.Descendants("ROW")
.Where(e=> e.Attribute("LABELHEIGHT") != null);
最后您可以使用
保存更改rows.First().Attribute("LABELHEIGHT").Value = ""; // your value
查看demo