Example #1
0
//解析Table元素
func parseTableElement(table dom.Element, p *PageSetting) *PrintTable {
	var (
		tmp  string
		err  error
		fval float64
	)
	z := NewPrintTable()
	parsePosCommonAttribute(table, z)
	if z.GetWidth() == 0 {
		z.SetWidth(p.Width)
	}
	z.SetName("Table")

	tmp, err = getAttr(table.Attr(), "LineSeperate")
	if err == nil {
		fval, err = strconv.ParseFloat(tmp, 32)
		if err != nil {
			utils.Error("can't format LineSeperate attribute %s,expected float32 value", tmp)
		}
		z.LineSeperate = float32(fval)
	}

	parsePrintContent(table, z, p)
	return z
}
Example #2
0
//保存所有设备配置
func (p *ConfigProtocol) SaveAllDevConfig(r *http.Request, arg *JsonConfigInputAgr, res *JsonResponse) error {
	utils.Debug("received ConfigProtocol SaveAllDevConfig request")
	var (
		n  dom.Node
		t  dom.Element
		dt dom.Attribute
	)
	db := dom.NewDOMBuilder(strings.NewReader(arg.Content), dom.NewDOMStore())
	d, err2 := db.Build()
	if err2 != nil {
		res.Code = 1
		res.ErrMsg = fmt.Sprintf("parse xml file error,category :[%+v] ", err2.Error())
		utils.Error("parse xml file error,category:[%+v]", err2.Error())
		return nil
	}

	f := d.ChildNodes()

	for i := 0; i < len(f); i++ {
		n = f[i]
		switch n.Kind() {
		case dom.ElementKind:
			t = n.(dom.Element)
			switch t.Name() {
			case "Device": // 解析设置
				var v []dom.Attribute
				v = t.Attr()
				for j := 0; j < len(v); j++ {
					dt = v[j]
					if strings.EqualFold(dt.Name(), "Category") {
						err := SaveDrvConfig(dt.Value(), t.String())

						if err != nil {
							res.Code = 1
							res.ErrMsg = fmt.Sprintf("save file error,category :%s  content is : [%s]", dt.Value(), t.String())
							utils.Error("can't save category [%s] ,content is : [%s]", dt.Value(), t.String())
							return nil
						}
					}
				}
				break

			default:
				utils.Error("can't recognize element name: %s", t.Name())
			}
			break
		}
	}

	res.Code = 0

	utils.Debug("end ConfigProtocol SaveAllDevConfig request")
	return nil
}
Example #3
0
//解析通用的属性
func parsePosCommonAttribute(cur dom.Element, ps PrintPosInterface) {
	var tmp string
	var fval float64
	var err error
	tmp, err = getAttr(cur.Attr(), "Width")
	if err == nil {
		fval, err = strconv.ParseFloat(tmp, 32)
		if err != nil {
			utils.Error("can't format Height attribute %s,expected int value", tmp)
		}
		ps.SetWidth(float32(fval))
	}

	tmp, err = getAttr(cur.Attr(), "Height")
	if err == nil {
		fval, err = strconv.ParseFloat(tmp, 32)
		if err != nil {
			utils.Error("can't format Height attribute %s,expected int value", tmp)
		}
		ps.SetHeight(float32(fval))
	}

	tmp, err = getAttr(cur.Attr(), "Pos")
	ps.SetPos(tmp)

	tmp, err = getAttr(cur.Attr(), "Align")
	ps.SetAlign(tmp)

	tmp, err = getAttr(cur.Attr(), "Left")
	ps.SetLeft(tmp)

	tmp, err = getAttr(cur.Attr(), "Top")
	ps.SetTop(tmp)
}